【发布时间】:2022-01-10 17:53:28
【问题描述】:
我有一个包含如下行的文件,其中第 3 列有多个需要排序的数值:
文件:h1.csv
S101-T1 类;3343-1-25310;3344-1-25446 3345-1-25691 3348-1-27681 3347-1-28453
S101-T2 类;3343-2-25310;3344-2-25446 3345-2-25691
S101-T1 类;3343-3-25310;3345-3-25691 3343-3-25314
S101-T2 类;3343-4-25310;3345-4-25691 3343-4-25314 3344-4-25314
S102-T1 类;3343-5-25310;3344-5-25446 3345-5-25691
所以,预期的输出是:
S101-T1 类;3343-1-25310;3344-1-25446 3345-1-25691 3347-1-28453 3348-1-27681
S101-T2 类;3343-2-25310;3344-2-25446 3345-2-25691
S101-T1 类;3343-3-25310;3343-3-25314 3345-3-25691
S101-T2 类;3343-4-25310;3343-4-25314 3344-4-25314 3345-4-25691
S102-T1 类;3343-5-25310;3344-5-25446 3345-5-25691
我的想法是用 awk 捕获第三列,然后对其进行排序,最后打印输出,但我只是为了捕获该列。我没有成功对其进行排序,也没有打印出不想要的输出。
这是我目前得到的代码...
cat h1.csv | awk -F';' '{ gsub(" ","\n",$3); print $0 }'
我已经尝试过(还有一些人给出了错误):
cat h1.csv | awk -F';' '{ gsub(" ","\n",$3); print $3 | "sort -u" }'
cat h1.csv | awk -F';' '{ gsub(" ","\n",$3); sort -u; print $3 }'
那么,有没有可能这样做,如何?,任何帮助!谢谢...
【问题讨论】:
-
你为什么把一些数字放在粗体中?这有什么意义吗?
-
是的,只是为了突出显示当前订单和所需订单
-
这能回答你的问题吗? stackoverflow.com/questions/6438896/… 您可以使用
----field-separator=,来使用逗号作为字段分隔符。 -
不正确的欺骗。这个问题完全不同。这是关于在每条记录内排序而不是跨文件排序。
-
您的答案假定您要排序的字符串始终具有相同的长度,并且始终由
4digits-1digit-5digits部分组成,因为这就是您在示例输入/输出中显示的内容。如果情况并非总是如此,那么edit 你的问题是用1000-2-1 1000-10-1 200-1-1之类的情况来解决这个问题(并测试现有的答案),如果按数字和字母顺序排序,排序会非常不同。