在我正在重新格式化的文件中,我想將最後一列作爲第一列,並讓其餘列保持不變。我可以在Python中輕鬆完成這個任務,但是我認爲今晚我會學習一些awk。如何重新排列列
下面是一個例子:
(前)
polk_describes:1 diatribe_that:1 #label#:negative
(後)
#label#:negative polk_describes:1 diatribe_that:1
然而,有許多超過3列。實際上列數有所不同。
感謝,
的setjmp
在我正在重新格式化的文件中,我想將最後一列作爲第一列,並讓其餘列保持不變。我可以在Python中輕鬆完成這個任務,但是我認爲今晚我會學習一些awk。如何重新排列列
下面是一個例子:
(前)
polk_describes:1 diatribe_that:1 #label#:negative
(後)
#label#:negative polk_describes:1 diatribe_that:1
然而,有許多超過3列。實際上列數有所不同。
感謝,
的setjmp
您可以分配到田地,從而清除它們:
awk '{ lastfield = $NF; $NF = ""; print lastfield " " $0 }'
這裏有一個選項:
% 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
print $(NF), $1, $2, $3, $4 # etc. to the max number of columns
也可以寫在一個循環是更優雅和準確的,關於柱的側向承載力的數量。 (另請參閱Nicholas Riley在本文中的技巧,截斷最後一個字段$ 0並立即打印)。
你想打印$ 0,但刪除最後幾場?就像您可以分配給一個字段以自動更改$ 0一樣,您可以分配給NF刪除最後一個字段。
{ NF = NF - 2 ; print "All but the last two: " $) }
如果您發佈您正在討論的數據的示例,這將非常有幫助。 – NawaMan 2009-10-04 04:28:39
下面是一個例子... 前:polk_describes:1個diatribe_that:1#標籤#:負 期望:#標籤#:負polk_describes:1個diatribe_that:1 然而,也有不少超過3列。實際上列數有所不同。 – SetJmp 2009-10-04 04:35:27
對不起,我在這個問題中增加了這個例子,我可以得到更好的標記。 – SetJmp 2009-10-04 04:39:02