coreutils手册说
tsort 将其输入读取为字符串对,用空格分隔,表示部分排序。
如果一个字符串中有空格,根据手册,我不能对其和其他字符串使用 tsort 。我如何仍然对字符串和其他字符串使用 tsort?谢谢。
答案1
如果某些输入字符串包含空格,则不能直接使用 tsort。
您可以检查源代码,您会看到分隔符被硬编码为空格、制表符和换行符并且没有选择更改它们。
如果您想在单词可能包含空格的数据集上使用 tsort,我的建议是预处理数据集,将空格编码为非空白字符(或非空白字符序列),然后运行 tsort最后对最终输出进行后处理,将其解码回原始空白。
您或许可以用于sed
预处理和后处理步骤。使用哪个字符来编码空白取决于您的数据集,如果还有其他无效字符(例如#
或@
、$
或\
),也许您可以直接使用它们。否则,您可能需要考虑两个字符编码(例如将空格编码为\s
)并包括一种对引用字符本身进行编码的方法(例如\\
对单个退格进行编码。)