次の形式のファイルがある場合:
line1 column1
line2 columnA
line3 column1A
exclude this
line5 column2
line6 columnB
line7 column2B
列を入れ替えたいので、column*
の前にline*
が出力されます。次のような単純なawk
コマンドを使用します。awk '{print $2 " " $1}'
を使用して、次のような出力を取得します。
column1 line1
columnA line2
column1A line3
this exclude
column2 line1
columnB line2
column2B line3
ここで、exclude
を含む行を印刷するが、再ソートはしないようにします(3行目とは限りません)。このコマンドを使用して次の行を無視することができます:awk '/exclude/{next}{print $2 " " $1}'
そして除外された行なしで出力を取得します:
column1 line1
columnA line2
column1A line3
column2 line1
columnB line2
column2B line3
awk
にexclude
を含む行を印刷するが列を再ソートしないように指示するにはどうすればよいですか?だから私はこのような出力を得るでしょう:
column1 line1
columnA line2
column1A line3
exclude this
column2 line1
columnB line2
column2B line3
何かのようなもの
awk '{if(/exclude/){print}else{print $2,$1}}' file.txt
または、同じ結果ですが、少し短くなります。
awk '!/exclude/{$0=$2FS$1}1' file.txt