我想知道一些转义序列是做什么的,包括以下内容:
\b backspace
\f form feed
\n new line
\r carriage return
\t tab
此外,换页,换行和回车有什么区别? \ t和空格有什么区别?它们看起来都一样......
答案 0 :(得分:1)
您可以使用printf
测试这些转义序列,例如在C程序中或使用Unix / Linux shell(如Bash),如下所示。
printf
使用的字符串格式更加可靠,因为使用制表符仍然会导致交错的列。请参阅本答复底部的示例。 $
表示shell提示符,不应键入。包含它是为了区分您键入的内容和输出内容。我在每个字符串的末尾添加了换行符\n
,因此输出占用了自己的行。
$ printf 'help\blo - backspace\n'
hello - backspace
$ printf 'two\nlines - newline\n'
two
lines - newline
$ printf 'clocks - carriage return\rsla\n'
slacks - carriage return
$ printf 'Fruit\tColor\tQuantity\ngrapes\tgreen\t100\nbananas\tyellow\t50\n- tabs\n'
Fruit Color Quantity
grapes green 100
bananas yellow 50
- tabs
有关详细信息,请参阅ASCII Control Characters。
尝试此操作,了解printf
格式如何改进标签:
$ array=(A B C 'apple pie' 'banana split' 'cherry turnover' 100 200 300)
$ for ((i=0; i<12; i+=3)); do printf '%s\t%s\t%s\n' "${array[@]:i:3}"; done
A B C
apple pie banana split cherry turnover
100 200 300
$ for ((i=0; i<12; i+=3)); do printf '%-16s%-16s%s\n' "${array[@]:i:3}"; done
A B C
apple pie banana split cherry turnover
100 200 300
如您所见,第二个版本中的列没有交错,整体输出宽度相同。