Using GNU awk
:
awk '
BEGIN { IGNORECASE = 1 }
/^select asdf/ {
sub( /\<sdfg\>/, "XXXX", $0 )
}
{ print }
' infile
Output:
Select ASDF 325 XXXX sdflk lk
Select TRG 46sdg rasdftz fsgs 45
Select ASDF 6ffg XXXX 4456 sdrg
UPDATE: Avoid IGNORECASE
for a non-GNU awk
, and match case-sensitive. Thanks to jw013, who pointed out that detail:
awk '
/^Select ASDF/ {
sub( /\<sdfg\>/, "XXXX", $0 )
}
{ print }
' infile