Regex 如何使用standart linux UTIL删除前导空格

Regex 如何使用standart linux UTIL删除前导空格,regex,sed,grep,pipe,Regex,Sed,Grep,Pipe,我正在尝试在没有前导空格的情况下将grep的结果输出到控制台。我试图想出一些regexp,它将为每行排除前导零,但失败了。。 我发现,它可以用sed制作。所以我试过这个命令 cat feed* | grep '^.*[{]$' | sed -e 's/^[ \t]*//;s/[ \t]*$/' 并得到错误:sed:-e表达式#1,char 22:unterminated's'命令 我以前从未使用过sed,所以我不明白是什么/^[\t]/;s/[\t]$/'即使在阅读后也应该这样做 也许有人可以

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

cat feed* | grep '^.*[{]$' | sed -e 's/^[ \t]*//;s/[ \t]*$/'
并得到错误:sed:-e表达式#1,char 22:unterminated's'命令

我以前从未使用过sed,所以我不明白是什么/^[\t]/;s/[\t]$/'即使在阅读后也应该这样做


也许有人可以用grep来做。这将是完美的(我知道它可能不实用,但做起来很有趣)。如果有人能向我解释sed是如何使用该表达式的,以及我做错了什么,我将不胜感激。

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

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

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


它使用
perl
风格,只打印匹配的内容,而不是整行内容。它以任何非空格字符开始匹配,并使用非贪婪量词,直到它可以使用空格完成匹配,直到使用“向前看”结束为止。

您在接受的答案中发现了一个语法错误,该答案包含多个向上投票:-d仅使用grep的问题仍然存在此答案完全说明了如何使其工作。但是只使用grep呢?
grep -Po '\S.*?(?=\s*$)' infile