如何从终端中的每行开头删除文本并将其粘贴到每行末尾

如何从终端中的每行开头删除文本并将其粘贴到每行末尾

我有一长串数字和值,看起来像这样:

100 value1 value2

此列表中大约有 150 行,我想将每个数字移到值的末尾,使其看起来像这样:

value1 value2 100

我尝试使用这个命令来完成这项工作:

awk -F: '{print $2 $3 $1}' ~path/to/file.txt

但它只是打印文件中的所有内容

100 value1 value2
101 value3 value4
102 value5 value6

请帮忙!

提前致谢!

答案1

事实上,你很接近。 :)

尝试使用: awk '{print $2,$3,$1}' filename > output_file

并检查它: cat output_file

答案2

使用awk

awk '{ num = $1;$1=""; sub(/^ /,""); print $0,num; }' ~path/to/file.txt

这允许任意数量的列。解释:

  • 将第一列保存到变量“num”中,然后将其设置为空(即“”)
  • 删除前两列之间的额外空格(使用 sub)
  • 打印
    • $0 - 整行
    • “num”原始第一列

您还可以使用sed

sed 's/\([0-9]\+\) \(.*\)/\2 \1/' ~path/to/file.txt

相关内容