Awk 如何重新排列列
在我正在重新格式化的文件中,我希望将最后一列作为第一列,并使其余列保持不变。我可以用python轻松地做到这一点,但我想今晚我会学习一些awk 以下是一个例子: (之前) (之后) 但是,有超过3列的内容。事实上,列计数各不相同 谢谢 SetJmp这里有一个选项:Awk 如何重新排列列,awk,gawk,Awk,Gawk,在我正在重新格式化的文件中,我希望将最后一列作为第一列,并使其余列保持不变。我可以用python轻松地做到这一点,但我想今晚我会学习一些awk 以下是一个例子: (之前) (之后) 但是,有超过3列的内容。事实上,列计数各不相同 谢谢 SetJmp这里有一个选项: % echo 'polk_describes:1 diatribe_that:1 #label#:negative' | \ awk '{ print $NF " " substr($0, 1, length($0) - leng
% echo 'polk_describes:1 diatribe_that:1 #label#:negative' | \
awk '{ print $NF " " substr($0, 1, length($0) - length($NF)) }'
#label#:negative polk_describes:1 diatribe_that:1
这里有一个选择:
% echo 'polk_describes:1 diatribe_that:1 #label#:negative' | \
awk '{ print $NF " " substr($0, 1, length($0) - length($NF)) }'
#label#:negative polk_describes:1 diatribe_that:1
也可以写在一个循环中,关于列的数量,这个循环更加优雅和精确。(另请参阅本文中Nicholas Riley的技巧,从$0中截断最后一个字段并立即打印)
也可以写在一个循环中,关于列的数量,这个循环更加优雅和精确。(另请参阅本文中Nicholas Riley的诀窍,从$0中截断最后一个字段并立即打印)。您可以对字段进行赋值,从而清除字段:
awk '{ lastfield = $NF; $NF = ""; print lastfield " " $0 }'
您可以对字段进行赋值,从而清除字段:
awk '{ lastfield = $NF; $NF = ""; print lastfield " " $0 }'
是否要打印$0但删除最后两个字段?就像您可以分配给字段以自动更改$0一样,您也可以分配给NF以删除最后一个字段
是否要打印$0但删除最后两个字段?就像您可以分配给字段以自动更改$0一样,您也可以分配给NF以删除最后一个字段
awk '{ lastfield = $NF; $NF = ""; print lastfield " " $0 }'
{ NF = NF - 2 ; print "All but the last two: " $) }