使用awk交换两列

4

我尝试交换文本文件中的两列,字段分隔符是竖杠'|'。

我找到并尝试了下面这个方法:

awk ' { t = $1; $1 = $2; $2 = t; print; } ' input_file

当字段分隔符为制表符时,它可以正常工作。

我也尝试过

awk -F\|  '{print $2 $1 }' input_file

但是我无法指定 "|" 作为输出字段分隔符。
1个回答

6
您需要定义OFS,即输出字段分隔符。您可以通过以下任一方式来完成:
您需要定义OFS,即输出字段分隔符。您可以通过以下任一方式来完成:
awk 'BEGIN{FS=OFS="|"} {t=$1; $1=$2; $2=t; print} ' input_file

或者

awk -v OFS="|" -v FS="|" ' {t=$1; $1=$2; $2=t; print} ' input_file

or (thanks Jaypal!)

awk '{t=$1; $1=$2; $2=t; print}' OFS="|" FS="|" input_file

1
还有第三种方法。awk '{t=$1; $1=$2; $2=t; print}' OFS="|" FS="|" input_file - jaypal singh
1
(@fedorqui“你可以用以下任意一种方式完成”是正确的) - admdrew
2
听起来像是一个问题,可以在 english.stackexchange.com 上提问。=) - Etan Reisner
1
@admdrew 谢谢!!我总是在这个网站上学到新的东西,你太棒了 :) - fedorqui
1
@jaypal,我加入了你的第三种方法。谢谢! - fedorqui
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接