2

我正在尝试在没有前导空格的情况下输出到 grep 的控制台结果。我试图想出一些正则表达式,它将排除每行的前导零但失败了。我找到了答案,它可以用 sed 制作。所以我尝试了这个命令

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

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

我以前从未使用过 sed,所以即使在阅读manual之后,我也无法理解 's/^[ \t] //;s/[ \t] $/' 应该做什么。

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

4

2 回答 2

2

您缺少第二个sed表达式中的替换。说:

sed -e 's/^[ \t]*//;s/[ \t]*$//'
                              ^
                              |
                              |== This was missing thereby causing the error
于 2013-10-22T13:43:48.820 回答
1

删除前导和尾随空格:

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

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

于 2013-10-23T21:00:14.207 回答