将制表符、空格和换行符打印为 \t \s 和 \n 的终端命令

Joh*_*ino 5 text-processing whitespace

我用 c 编写了一个终端程序,将制表符转换为空格。我想看看它是否有效以及从制表符转换了多少空格。问题是当我创建一个名为 input.txt 的文件并将其通过管道传输到程序时,它只显示制表符和空格的空白,而不是实际的字符 \t 和 \s。所以我想知道是否有一个现有的终端命令可以获取我的程序的输出并分别用 \t 和 \s 替换制表符和空格:

cat input7.txt | ./detab
abc  def  
Run Code Online (Sandbox Code Playgroud)

也许是这样的:

cat input7.txt | ./detab | command
abc\s\s\sdef\s\s\s  
Run Code Online (Sandbox Code Playgroud)

这样的命令是否已经存在?

Gil*_*il' 9

在 Linux 下,将cat -T选项卡显示为^I. 还有其他选项可以使尾随空白明显,以可打印形式显示控制字符等。

如果要将程序的结果与原始结果进行比较,可以使用diff

./detab input7.txt | diff input7.txt - | cat -T
Run Code Online (Sandbox Code Playgroud)

您可能还想将程序的输入与标准实用程序进行比较expand

如果您想要将空格转换为\s和制表符转换为\t,则可以使用 sed:

sed -e 's/\\/\\\\/g' -e 's/\t/\\t/g' -e 's/ /\\s/g'
Run Code Online (Sandbox Code Playgroud)

(第一个表达式将反斜杠加倍,这使得转换没有歧义。)