Sorting 如何使用linux shell排序对具有多字符分隔符的文件进行排序?
我有一个文件,它的分隔符是“| |” 分隔符“| | |”不能替换为“|”或“| |”,因为数据本身可能包含“|”或“| |” 有人能告诉我如何用分隔符“| | |”对第2列进行排序吗 以下方法失败:Sorting 如何使用linux shell排序对具有多字符分隔符的文件进行排序?,sorting,Sorting,我有一个文件,它的分隔符是“| |” 分隔符“| | |”不能替换为“|”或“| |”,因为数据本身可能包含“|”或“| |” 有人能告诉我如何用分隔符“| | |”对第2列进行排序吗 以下方法失败: sort -t$'|||' -nrk2 a.txt > b.txt sort: multi-character tab `|||' 谢谢大家! 您可以将分隔符更改为|使用排序对其排序,然后将所有内容更改回: |将结果写入到b.txt中 sed的@\([^ |]\)\([^ |]\)@\1\
sort -t$'|||' -nrk2 a.txt > b.txt
sort: multi-character tab `|||'
谢谢大家! 您可以将分隔符更改为
|
使用排序
对其排序,然后将所有内容更改回:
|将结果写入到b.txt中
sed的@\([^ |]\)\([^ |]\)@\1\u条__\2@g'a.txt>b.txt
#在b.txt中将| | |更改为|
sed-i的@g'b.txt
#使用|分隔符将结果写入c.txt进行排序
排序-t$'|'-nrk2-k3,rn-k4,rn b.txt>c.txt
#将所有内容更改回c.txt:
#|至|||
sed-i的@g'c.txt
#酒吧|
塞德-我是s@__BAR__@|@g'c.txt
您可以交换列,然后对整个文件使用排序-n
,而无需指定delimiter@m13r你的方法行不通。上面的a.txt只是一个简单的例子。真实文件包含许多数字列,我必须对至少两个数字列进行排序,就像sort-t$'| | |'-nrk2-k3,rn-k4,rn a.txt>b.txt当您说它失败时,会发生什么?sort
是否无法运行,或者只是产生了不正确的输出?如果它无法运行,您会收到什么错误消息?如果输出不正确,您会得到什么输出?举例说明您得到的输出以及您的期望。
sort -t$'|||' -nrk2 a.txt > b.txt
sort: multi-character tab `|||'