我有一个文件试用版.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
选项来反转排序模式。
我很
抱歉对这个问题给出了错误的解释。所以这是最终答案。很简单:
- 首先使用
awk
获取文件试用版的第三列.txt并将其保存在临时文件中。 - 对此临时文件进行排序。
- 同时读取试用版.txt和临时文件中的每一行。为此,请阅读 https://unix.stackexchange.com/questions/82541/loop-through-the-lines-of-two-files-in-parallel。然后,从试用行的每个输入中.txt使用 awk 将其第 4 列替换为临时文件中的行输入。为此,请从如何使用 sed/awk 替换逗号分隔字符串中的第 n 列/字段?获取帮助。将其存储在新文件中,然后删除 temp。做!