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

标签 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

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

谢谢!

最佳答案

这种东西是sed的经典之作:

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

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

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

了解更多关于 sed here .

关于linux - 更改文本 linux 文件中的列位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31566643/

相关文章:

bash - 在不使用临时文件的情况下对文件进行排序

php - 如何使用 PHP 使我的输出文本可滚动?

php - htaccess RewriteRule 500 错误 - 循环

php - 在 Linux/Apache 上通过 PHP 脚本访问 USB 网络摄像头

linux - 我的 init.d 服务无法识别

c - K叉树(排序词)

Java Arrays.sort() 需要很长时间

c - c - 如何在c中比fprintf更快地写入文本文件?

html - 正则表达式:选择除 img 标签以外的所有内容

c++ - 在 linux(raspbian)中,opencv set(CV_CAP_PROP_FPS, 60) 不工作