4

关于 SO 和其他地方的一个常见问题是如何使用 bash for 循环遍历每一行输出。我知道答案,并且多年来我一直很高兴地使用以下内容:

IFS=$'\n'

但是,我对使用的语法有点困惑。我有一个很好的搜索/谷歌,但由于上面搜索引擎使用/忽略的符号数量众多 - 我没有找到解释。

我最近也在另一个脚本的一些输出中发现了这一点。我在回显 netcat 的结果时遇到问题。经过仔细检查,结果发现 nc 的输出格式类似:

$'Some_Output_Here\r`

我最终需要切断 . \r,但不确定最好的方法,我最终使用egrep -o ([0-9|a-Z]*). 有更好的想法吗?

4

2 回答 2

2

Bash 手册解释了这种引用方法,它称之为ANSI-C Quoting

于 2012-09-10T08:18:20.720 回答
1

在迈克尔编辑了原始帖子之后,我认为它更有意义。

我认为发布的人需要查找回车的删除。这应该足够了

sed -e 's/^M//g'

还有很多其他方法可以删除控制不可打印的字符:

所有控制字符:

egrep -v "[[:cntrl:]]"
sed -r "s/[[:cntrl:]]//g"

不可打印字符

tr -dc '[:print:]'
于 2012-09-10T22:42:44.370 回答