Хотя awk
кажется более разумным использовать в этом случае, вы можете использовать gnu sed
как:
sed 'H;/}/{g;/data_source_name/!p;z;h};d'
описание:
#!/bin/sed -f
H # append each line to hold space
/}/ { # on each closing bracket
g # get contents of hold space to pattern space
/data_source_name/!p # print pattern space if it does not contain "data_source_name"
z;h # empty hold space
}
d