如何使用几个字符长的分隔符进行排序?

eva*_*ine 5 sort

输入:

$ cat a.txt 
1FOO2FOO3
4FOO5FOO5
2FOO1FOO9
$ 
Run Code Online (Sandbox Code Playgroud)

输出:

$ cat a.txt | sort SOMEMAGIC
2FOO1FOO9
1FOO2FOO3
4FOO5FOO5
$ 
Run Code Online (Sandbox Code Playgroud)

问题:如果我有几个字符长的分隔符,我该如何排序?(“FOO”)?

在示例a.txt中按第二列排序。

问题是一般来说,数字a.txt可以是任何东西。

Jen*_*y D 7

使用 egsed用一个字符的分隔符替换字符串,按列排序,然后再次替换分隔符:

sed -e s/FOO/X/g a.txt | sort -k 2,2 -t X | sed -e s/X/FOO/g 
Run Code Online (Sandbox Code Playgroud)

这假设有一个您知道的字符没有出现在输入中。控制字符将是一个常见的候选者,但您需要根据您对输入格式的了解做出选择。

  • 只需使用文本文件通常不包含的较低的 ascii 字符,例如 `\x02`。 (2认同)