更改文本linux文件中的列位置

时间:2015-07-22 14:50:07

标签: linux sorting text

我正在寻找一种解决方案来改变linux中列的位置。 在我的特殊情况下,从第一个位置到最后一个位置。

qty | sender | recipient | some email subject

sender | recipient | some email subject | qty

如果我的文件包含以下内容:

4 | one | two | the first subject
5 | one | four | other interesting subject

我想得到以下输出:

one | two | the first subject | 4
one | four | other interesting subject | 5

分隔符是" |"。如果我有" |"并不重要。在每行的开头或结尾。

谢谢!

1 个答案:

答案 0 :(得分:1)

这种事情对于sed来说是一项经典的工作:

sed 's/\(^[^|]*\)|\(.*$\)/\2 | \1/' yourFile.txt >newFile.txt

将更改直接保存在同一文件中:

sed -i 's/\(^[^|]*\)|\(.*$\)/\2 | \1/' yourFile.txt
  • ^ [^ |] * - >直到第一个垂直条的开头。
  • 。* $ - >任何剩余的字符,直到行尾。
  • \(\) - >这是为了保存这些部分,稍后使用\ {number}
  • 恢复
  • \ 2 | \ 1 - >使用新订单恢复已保存的零件。

了解有关sed here的更多信息。