Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何使用linux shell排序对具有多字符分隔符的文件进行排序?_Sorting - Fatal编程技术网

Sorting 如何使用linux shell排序对具有多字符分隔符的文件进行排序?

Sorting 如何使用linux shell排序对具有多字符分隔符的文件进行排序?,sorting,Sorting,我有一个文件,它的分隔符是“| |” 分隔符“| | |”不能替换为“|”或“| |”,因为数据本身可能包含“|”或“| |” 有人能告诉我如何用分隔符“| | |”对第2列进行排序吗 以下方法失败: sort -t$'|||' -nrk2 a.txt > b.txt sort: multi-character tab `|||' 谢谢大家! 您可以将分隔符更改为|使用排序对其排序,然后将所有内容更改回: |将结果写入到b.txt中 sed的@\([^ |]\)\([^ |]\)@\1\

我有一个文件,它的分隔符是“| |”

分隔符“| | |”不能替换为“|”或“| |”,因为数据本身可能包含“|”或“| |”

有人能告诉我如何用分隔符“| | |”对第2列进行排序吗

以下方法失败:

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 `|||'