我使用了带有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
我想添加另一个|过滤
答案 0 :(得分:7)
添加此过滤器以从行的开头删除空格并删除空行,注意它使用两个sed
命令,一个用于删除前导空格,另一个用于删除没有内容的行
| sed -e 's/^\s*//' -e '/^$/d'
the Wikipedia article for sed中有一个例子,它使用d命令删除空白或仅包含空格的行,我的解决方案使用转义序列\s
来匹配任何空格字符(空格,制表符) ,等等),这是维基百科的例子:
sed -e '/^ *$/d' inputFileName
答案 1 :(得分:5)
这也可以使用tr
命令完成。像这样
| tr -s [:space:]
或者
| tr -s \\n
如果您只想删除换行符,而不是每行开头的空格字符。
答案 2 :(得分:3)
我会这样做,简短而简单:
sed 's: ::g'
在命令的末尾添加它,并且所有空格都将变为poof。例如,尝试以下命令:
cat/proc/meminfo | sed 's: ::g'
答案 3 :(得分:2)
您也可以使用grep:
... | grep -o '[^$(printf '\t') ].*'
这里我们打印至少有一个字符不是空格的行。通过使用" -o" flag,我们只打印匹配,并强制匹配从非空白字符开始。
编辑:更改了命令,以便删除前导空格字符。
希望这有助于=)
答案 4 :(得分:1)
在打印时使用grep "^." filename
删除空白行。这里,以任何字符开头的行都匹配,以便省略空白行。
^
表示该行的开头。
.
检查任何字符。
答案 5 :(得分:0)
(whateverproducesthisoutput)|sed -E 's/^[[:space:]]+//'|grep -v '^$'
(取决于您的sed
,您可以将[[:space:]]
替换为\s
)。