linux - 如何将最后一列移动到第 n 列?

标签 linux shell awk sed

我需要将文本的最后一列移到第 n 位,我尝试了 awk 的许多变体,但无法维护文件的排列。

以下是我正在处理的文件的副本:

2014-05-27T02:26:46-05:00 nil-severity uuuu vvvvv xxxx yyyy zzzz  
2014-05-27T02:26:22-05:00 nil-severity vvvvv xxxx yyyy zzzz    
2014-05-27T02:25:58-05:00 nil-severity xxxx yyyy zzzz  
2014-05-27T02:25:58-05:00 nil-severity yyyy zzzz  
2014-05-27T02:25:58-05:00 nil-severity vvvvv xxxx yyyy zzzz  

期望的输出:

2014-05-27T02:26:46-05:00 nil-severity zzzz uuuu vvvvv xxxx yyyy   
2014-05-27T02:26:22-05:00 nil-severity zzzz vvvvv xxxx yyyy     
2014-05-27T02:25:58-05:00 nil-severity zzzz xxxx yyyy  
2014-05-27T02:25:58-05:00 nil-severity zzzz yyyy  
2014-05-27T02:25:58-05:00 nil-severity zzzz vvvvv xxxx yyyy  

最佳答案

将最后一列移动到第三列的简短 awk 命令:

awk '{$3=$NF OFS $3;$NF=""}1' file

关于linux - 如何将最后一列移动到第 n 列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23889326/

相关文章:

linux - 为什么 .text 部分不在 "Entry point address"附近?

python - 如何在 shell 中获取 PYTHONPATH?

macos - 从 Mac 上的命令行启用/禁用 Fn 键

regex - 将日志输出更改为linux中的配置文件

linux - 在另一个文件中查找一个文件的内容

linux - 将存储在 ec2 实例上的文件备份到 s3

Ruby sysread IO 太慢了

linux - 是否可以将 tr 与文件中的内容一起使用?

linux - 不带参数或输入文件的简单 awk 脚本

awk - 如何在特定模式后的换行符之间使用 sed 或 awk 提取?