In place variable substitution with AWK

The content of the input file becomes stdin for rm and awk. rm ignores the input and removes the file, but its file descriptor remains open until both commands, rm and awk is complete. AWK process this "nameless" file and creates a new file:

  { rm $CSV_FILE && awk -F',' -v stid="$ST_ID" '$1 ~ stid {gsub(/&/,"",$7)}1' > $CSV_FILE; } < $CSV_FILE

  • "-v" sets the awk variable that is passed in via shell script variable.
  • "gsub" replaces with "" all occurrence of & in the 7th field. Use "sub" for single/first occurrence substitution or GNU Awk's gensub for more articulated substitutions.
  • "1" is a shortcut which means print the current record:

Comments

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.
swap fields with awk

Swap out the first and second field, removing all the double quotes from csv file:

{ rm test.csv && awk -F',' 'gsub(/"/,"&quot;){print $2","$1}' >test.csv ;} <test.csv

Original:

"first","second"

Result:

second,first

Comment