Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 如何重新排列列_Awk_Gawk - Fatal编程技术网

Awk 如何重新排列列

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

在我正在重新格式化的文件中,我希望将最后一列作为第一列,并使其余列保持不变。我可以用python轻松地做到这一点,但我想今晚我会学习一些awk

以下是一个例子:

(之前)

(之后)

但是,有超过3列的内容。事实上,列计数各不相同

谢谢

SetJmp这里有一个选项:

% 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: " $) }