我使用了一个带有 sed 和 cut 过滤器的 grep 命令,基本上把我的输出变成了类似于这个的东西
this line 1
this line 2
another line 3
another line 4
我试图得到一个没有行之间和行前空格的输出,所以它看起来像
this line 1
this line 2
another line 3
another line 4
我想添加另一个 | 筛选
我使用了一个带有 sed 和 cut 过滤器的 grep 命令,基本上把我的输出变成了类似于这个的东西
this line 1
this line 2
another line 3
another line 4
我试图得到一个没有行之间和行前空格的输出,所以它看起来像
this line 1
this line 2
another line 3
another line 4
我想添加另一个 | 筛选
添加此过滤器以从行首删除空格并删除空白行,注意它使用两个sed
命令,一个用于删除前导空格,另一个用于删除没有内容的行
| sed -e 's/^\s*//' -e '/^$/d'
在sed 的 Wikipedia 文章中有一个示例,它使用 d 命令删除空白行或仅包含空格的行,我的解决方案使用转义序列\s
来匹配任何空白字符(空格、制表符等),这里是维基百科的例子:
sed -e '/^ *$/d' inputFileName
这也可以通过tr
命令来完成。像这样
| tr -s [:space:]
或者
| tr -s \\n
如果您只想删除换行符,而不是每行开头的空格字符。
我会这样做,简短而简单:
sed 's: ::g'
在你的命令末尾添加这个,所有的空格都会消失。例如试试这个命令:
cat /proc/meminfo | sed 's: ::g'
您还可以使用 grep:
... | grep -o '[^$(printf '\t') ].*'
在这里,我们打印至少有一个非空白字符的行。通过使用“-o”标志,我们只打印匹配,并且我们强制匹配从非空白字符开始。
编辑:更改命令,以便它可以删除前导空格字符。
希望这会有所帮助=)
用于grep "^." filename
在打印时删除空白行。此处,匹配以任何字符开头的行,以便忽略空白行。
^
表示行的开始。
.
检查任何字符。
(whateverproducesthisoutput)|sed -E 's/^[[:space:]]+//'|grep -v '^$'
(取决于您的sed
,您可以替换[[:space:]]
为\s
)。