复制第一个位置awk的最后一列

时间:2014-01-09 10:15:31

标签: bash text sed awk preg-replace

我想在第一个位置复制colum的第一个值并注释掉旧值。 例如:

word1 word2 1233425     -----> 1233425 word1 word2 #1233425
word1 word2 word3 49586 -----> 49586   word1 word2 word3   #49586

我不知道号码前的字数。

我尝试使用awk脚本:

awk '{$1="";score=$NF;$NF="";print $score $0 #$score}' file

但它不起作用。

4 个答案:

答案 0 :(得分:5)

这个怎么样?它与你的非常相似。

$ awk '{score=$NF; $NF="#"$NF; print score, $0}' file
1233425 word1 word2 #1233425
49586 word1 word2 word3 #49586

请注意,在您的情况下,您正在清空$1,这不是必需的。只需将score存储起来,然后将#添加到$NF的开头。

答案 1 :(得分:5)

使用awk

awk '{f=$NF;$NF="#" $NF;print f,$0}' file

由于我们发布了相同的答案,因此这是一个较短的变体:)

awk '{$0=$NF FS$0;$NF="#"$NF}1' file

$0=$NF FS$0将最后一个字段添加到第一行 $NF="#"$NF#添加到最后一个字段 1打印行

答案 2 :(得分:1)

一种perl方式:

perl -pe 's/^(.+ )(\d+)/$2 $1 #$2/' infile

答案 3 :(得分:1)

sed 's/\(.*\) \([^[:blank:]]\{1,\}\)/\2 \1 #\2/' YourFile

使用GNU sed add -posix选项