use*_*050 14 echo text-processing wc
跑步时
echo abcd | wc -c
Run Code Online (Sandbox Code Playgroud)
它返回5
。
但是这个词abcd
只有4个字符长。
被echo
打印的字经过一些特殊字符abcd
?
我可以阻止echo
打印吗?
Bab*_*aba 24
echo
\n
在行尾打印换行符 ( )
echo abcd | xxd
0000000: 6162 6364 0a abcd.
Run Code Online (Sandbox Code Playgroud)
对于某些echo
实现,您可以使用-n
:
-n
不输出尾随换行符
并测试:
echo -n abcd | wc -c
4
Run Code Online (Sandbox Code Playgroud)
对于其他一些,您需要\c
转义序列:
\c
: 抑制<newline>
输出中的最后一个参数。'\c'
参数中之后的所有字符都将被忽略。
echo -e 'abcd\c' | wc -c
4
Run Code Online (Sandbox Code Playgroud)
便携地,使用printf
:
printf %s abcd | wc -c
4
Run Code Online (Sandbox Code Playgroud)
(请注意,wc -c
计算字节数,而不是字符数(尽管abcd
它们通常是等效的)。wc -m
用于计算字符数)。
如果您在echo
没有-n
选项的情况下运行,它会在参数后写入一个换行符。否则,如果您键入echo foo
,您的下一个 shell 提示将出现在foo
. wc
计算换行符也是如此 。
我怎样才能防止
echo
打印它?
echo -n abcd | wc -c
Run Code Online (Sandbox Code Playgroud)