Bash控制台将一些不可见的字符放入字符串var中

时间:2019-11-27 17:31:51

标签: string bash sed grep

下面,我分享了我的控制台。我想从某些命令的输出中剪切一些字符串。 但是有17个额外的字符,我不知道从哪里来。 有人可以向我解释吗?

$ ls -al | grep total | sed 's/[[:blank:]].*$//' | wc -m
      23
$ ns="total"
$ echo $ns | sed 's/[[:blank:]].*$//' | wc -c
       6

1 个答案:

答案 0 :(得分:2)

  

但是还有17个额外的字符,我不知道它们来自哪里。

grep使用ANSI escape codes来为匹配的子字符串着色。您可能有一个别名(运行alias | grep grep来检查)

alias grep='grep --color=always'

即使输出不是tty或类似的东西,也会导致grep颜色匹配的某个地方。

尝试

ls -al | grep --color=never total | sed 's/[[:blank:]].*$//' | wc -m

您将得到六个。