如何使用标准linux utils删除前导空格

时间:2013-10-22 13:40:19

标签: regex sed grep pipe

我正在尝试输出grep的控制台结果而没有前导空格。我试着想出一些regexp,它会排除每一行的前导零但是失败了.. 我发现answer,它可以用sed制作。所以我尝试了这个命令

cat feed* | grep '^.*[{]$' | sed -e 's/^[ \t]*//;s/[ \t]*$/'

并得到错误:sed:-e expression#1,char 22:unterminated`s s命令

我之前从未使用过sed,所以我无法理解什么是/ ^ [\ t] //; s / [\ t] $ /'即使在阅读{{ 3}}

可能有人可以使用grep来做到这一点。它是完美的(我明白它可能不实用,但它很有趣)。如果有人能解释我sed如何使用该表达式以及我做错了什么,我会非常感激。

2 个答案:

答案 0 :(得分:2)

您在第二个sed表达式中错过了替换。说:

sed -e 's/^[ \t]*//;s/[ \t]*$//'
                              ^
                              |
                              |== This was missing thereby causing the error

答案 1 :(得分:1)

尝试以下解决方案,使用删除前导和尾随空格:

grep -Po '\S.*?(?=\s*$)' infile

它使用perl风格并仅打印匹配的内容,而不是整行。它开始与任何非空格字符匹配,并使用非贪婪的量词,直到它可以完成与空白的匹配,直到结束前瞻。