Bash脚本:Forline for Newline ...语法解释?

时间:2012-09-10 08:15:37

标签: linux bash shell scripting

在SO和其他地方,一个经常被问到的问题是如何使用bash for-loop来遍历每一行输出。我知道答案了,多年来我一直很开心地使用以下内容:

IFS=$'\n'

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

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

$'Some_Output_Here\r`

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

在迈克尔编辑原帖后,我认为这更有意义。

我认为发布的人需要查找删除回车。

应该足够了
sed -e 's/^M//g'

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

所有控制字符:

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

不可打印的字符

tr -dc '[:print:]'