1

再フォーマット中のファイルで、最後の列を最初の列として配置し、残りの列は同じままにしたいと思います。Python でこれを簡単に行うことができましたが、今晩 awk を学ぶと思いました。

次に例を示します。

(前)

polk_describes:1 diatribe_that:1 #label#:negative

(後)

#label#:negative polk_describes:1 diatribe_that:1

ただし、3 列よりも多くの列があります。実際、列数は異なります。

ありがとう、

SetJmp

4

4 に答える 4

4

フィールドに割り当てを行って、それらをクリアすることができます。

awk '{ lastfield = $NF; $NF = ""; print lastfield " " $0 }'
于 2009-10-04T07:28:31.960 に答える
1

$0 を出力して、最後の 2 つのフィールドを削除しますか? フィールドに代入して $0 を自動的に変更できるように、NF に代入して最後のフィールドを削除できます。

{ NF = NF - 2 ; print "All but the last two: " $) }
于 2011-02-17T19:31:05.223 に答える
1

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 
于 2009-10-04T04:46:20.370 に答える
0
  print $(NF), $1, $2, $3, $4  # etc. to the max number of columns 

列の数に関して、よりエレガントで正確なループで記述することもできます。(この記事の Nicholas Riley のトリックも参照してください。最後のフィールドを $0 から切り捨てて、すぐに出力します)。

于 2009-10-04T04:46:45.670 に答える