coreutils 手册说
tsort 将其输入读取为由空格分隔的字符串对,表示部分排序。
如果一个字符串里面有一个空格,根据手册,我不能在它和其他字符串上使用 tsort 。我如何仍然在字符串和其他字符串上使用 tsort ?谢谢。
You can't use tsort directly if some of your input strings contain whitespace.
You can check the source, you'll see the delimiters are hardcoded to space, tab and newline and there's no option to change them.
如果您想在单词可能包含空格的数据集上使用 tsort,我的建议是对数据集进行预处理以将空格编码为非空白字符(或非空白字符序列),然后运行 tsort它并最终对最终输出进行后处理以将其解码回原始空白。
您可能可以sed用于预处理和后处理步骤。使用哪个字符来编码空格取决于您的数据集,如果还有其他无效字符(例如#或@、$或\),也许您可以直接使用它们。否则,您可能需要考虑使用两个字符编码(例如将空格编码为\s)并包括一种对引用字符本身进行编码的方法(例如\\对单个退格进行编码。)