如果字符串中有空格,我仍然可以在字符串上使用 tsort 吗?

如果字符串中有空格,我仍然可以在字符串上使用 tsort 吗?

coreutils手册说

tsort 将其输入读取为字符串对,用空格分隔,表示部分排序。

如果一个字符串中有空格,根据手册,我不能对其和其他字符串使用 tsort 。我如何仍然对字符串和其他字符串使用 tsort?谢谢。

答案1

如果某些输入字符串包含空格,则不能直接使用 tsort。

您可以检查源代码,您会看到分隔符被硬编码为空格、制表符和换行符并且没有选择更改它们。

如果您想在单词可能包含空格的数据集上使用 tsort,我的建议是预处理数据集,将空格编码为非空白字符(或非空白字符序列),然后运行 ​​tsort最后对最终输出进行后处理,将其解码回原始空白。

您或许可以用于sed预处理和后处理步骤。使用哪个字符来编码空白取决于您的数据集,如果还有其他无效字符(例如#@$\),也许您可​​以直接使用它们。否则,您可能需要考虑两个字符编码(例如将空格编码为\s)并包括一种对引用字符本身进行编码的方法(例如\\对单个退格进行编码。)

相关内容