nat*_*ath 3 awk text-processing text-formatting
如果我有以下格式的文件:
line1 column1
line2 columnA
line3 column1A
exclude this
line5 column2
line6 columnB
line7 column2B
Run Code Online (Sandbox Code Playgroud)
我想交换列,所以column*
在line*
. 我使用这样一个简单的awk
命令:awk '{print $2 " " $1}'
并得到这样的输出:
column1 line1
columnA line2
column1A line3
this exclude
column2 line1
columnB line2
column2B line3
Run Code Online (Sandbox Code Playgroud)
现在我想要exclude
打印但不使用的行(不一定是第 3 行)。我可以使用此命令忽略行:awk '/exclude/{next}{print $2 " " $1}'
并且我得到一个没有排除行的输出:
column1 line1
columnA line2
column1A line3
column2 line1
columnB line2
column2B line3
Run Code Online (Sandbox Code Playgroud)
我怎么知道awk
打印那些包含exclude
但不使用列的行?所以我会得到这样的输出:
column1 line1
columnA line2
column1A line3
exclude this
column2 line1
columnB line2
column2B line3
Run Code Online (Sandbox Code Playgroud)
就像是
awk '{if(/exclude/){print}else{print $2,$1}}' file.txt
Run Code Online (Sandbox Code Playgroud)
或者,同样的结果,但更短一点。
awk '!/exclude/{$0=$2FS$1}1' file.txt
Run Code Online (Sandbox Code Playgroud)