对文件的单个列进行排序,而不会干扰其他列



我有一个文件试用版.txt其中我只想对它的第四列进行排序,而不改变其他列的顺序。我的文件内容是这样的。

A user 9 12 ab    
B user 2 9 cd    
C user 5 13 da

我希望我的输出看起来像这样

A user 9 13 ab    
B user 2  12 cd    
C user 5  9 da

我试过这个。

sort -k 4 trial.txt

但它没有按预期提供输出。

使用:

sort -k4 -n -s trial.txt除了k选项外,建议您使用-n来比较数字,-s选项会抑制最后的比较。查看手册以获取更多信息。此外,您所需的输出显示降序,以防使用-r选项来反转排序模式。

我很

抱歉对这个问题给出了错误的解释。所以这是最终答案。很简单:

  1. 首先使用 awk 获取文件试用版的第三列.txt并将其保存在临时文件中。
  2. 对此临时文件进行排序。
  3. 同时读取试用版.txt和临时文件中的每一行。为此,请阅读 https://unix.stackexchange.com/questions/82541/loop-through-the-lines-of-two-files-in-parallel。然后,从试用行的每个输入中.txt使用 awk 将其第 4 列替换为临时文件中的行输入。为此,请从如何使用 sed/awk 替换逗号分隔字符串中的第 n 列/字段?获取帮助。将其存储在新文件中,然后删除 temp。做!

最新更新