Shell删除选项卡/空格

时间:2012-10-06 21:16:05

标签: grep

我使用了带有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

我想添加另一个|过滤

6 个答案:

答案 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)。