Adding a String after a text in a Line (using nawk)

Hello

I need to add a String after a text in a line. The Unix file is huge and I think nawk would be quick.

Current:

-name FILTER -node 60265 -cob 31/01/2013 -risktype + -change 1 -filter ALL_NODES -toponly -warnings OFF -delimiter "|" -noheader -select node,var(99),vardate(99),var(95),vardate(95),var(100),vardate(100),var(0),vardate(0),var(1),vardate(1),var(5),vardate(5) @localplaf=abc.plf:60265| |GWCH CAP MKTS DEALERSHIP|31/01/2013|GRN|GRN|101|COB|03|18:00:00|6310|56736982059.70|USD|8~1|USD|DEPOSIT_USD_1M| |-1749.871|1|Y|GEN~1|USD|DEPOSIT_USD_3M_FUTURE| |-1157.0864|1|Y|GEN~1|USD|DEPOSIT_USD_1M| |-3.8346|1|Y|GEN~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_2Y_AA| |-0.3306|1|N|SPC~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_5Y_AA| |-4.4626|1|N|SPC~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_2Y_AA| |-1546.3948|1|Y|SPC~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_5Y_AA| |-640.9442|1|Y|SPC~6|USD|DEPOSIT_USD_3M_FUTURE|BOND_USD_5Y_AA| |-1446.3581|1|Y|SPC~

After:

-name FILTER -username filter -node 60265 -cob 31/01/2013 -risktype + -change 1 -filter ALL_NODES -toponly -warnings OFF -delimiter "|" -noheader -select node,var(99),vardate(99),var(95),vardate(95),var(100),vardate(100),var(0),vardate(0),var(1),vardate(1),var(5),vardate(5) @localplaf=abc.plf:60265| |GWCH CAP MKTS DEALERSHIP|31/01/2013|GRN|GRN|101|COB|03|18:00:00|6310|56736982059.70|USD|8~1|USD|DEPOSIT_USD_1M| |-1749.871|1|Y|GEN~1|USD|DEPOSIT_USD_3M_FUTURE| |-1157.0864|1|Y|GEN~1|USD|DEPOSIT_USD_1M| |-3.8346|1|Y|GEN~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_2Y_AA| |-0.3306|1|N|SPC~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_5Y_AA| |-4.4626|1|N|SPC~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_2Y_AA| |-1546.3948|1|Y|SPC~6|USD|DEPOSIT_USD_1M_AAA|BOND_USD_5Y_AA| |-640.9442|1|Y|SPC~6|USD|DEPOSIT_USD_3M_FUTURE|BOND_USD_5Y_AA| |-1446.3581|1|Y|SPC~

Basically I need to add "-username filter" to every line after "-name FILTER".

Really appreciate your thoughts.

nawk ' { sub(/^-name FILTER/,"-name FILTER -username filter") } 1' filename

OR

nawk ' { sub(/^-name FILTER/,"& -username filter") } 1' file
1 Like
perl -pe 's/(^-name FILTER)/$1 -username filter/' infile

Add -i option, and infile is changed directly.

1 Like
$ sed 's:\(-name FILTER\):\1 -username filter:' file
-name FILTER -username filter -node 60265 . . .
1 Like

Thank you very much for all your replies.