ファイルの途中での FS の変更
非常にありがちな問題ですが、皆さんはどうやって処理していますか? 私は FS は 1 つにして、あとは split() で分割したりするケースが多いです。
Question
#field1,field2,field3 #field1,field2,field3,field4 #field1,field2 @field1;field2;field3;field4 @field1;field2;field3 @field1;field2
というファイルがありますが、以下のようにしても思っている通りにならないということです。
$ awk '/^#/{FS=",";print $1}/^@/{FS=";";print $1}' file1 #field1,field2,field3 #field1 #field1 @field1;field2;field3;field4 @field1 @field1
Answer
多分、これがベストと思われますが、フィールドの再構成を行うものです。
awk '/^#/{FS=",";$0=$0;print $1}/^@/{FS=";";$0=$0;print $1}' file
次は私のように split() を使うものです。
$ awk '/^#/{FS=",";split($0,a,",");print a[1]}/^@/{FS=";";split($0,a,";");print a[1]} file1