Grep Shell删除选项卡/空格

Grep Shell删除选项卡/空格,grep,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 我想添加另一个| filter添加此过滤器以删除行首的空格和空行,请

我在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

我想添加另一个| filter

添加此过滤器以删除行首的空格和空行,请注意,它使用两个
sed
命令,一个用于删除前导空格,另一个用于删除没有内容的行

| sed -e 's/^\s*//' -e '/^$/d' 
有一个示例使用d命令删除空白行或仅包含空格的行,我的解决方案使用转义序列
\s
匹配任何空格字符(空格、制表符等),以下是Wikipedia示例:

sed -e '/^ *$/d' inputFileName 
  • 插入符号(^)与行的开头匹配
  • 美元符号($)与行尾匹配
  • 星号(*)与上一个字符的零次或多次匹配

(根据您的
sed
,您可以用
\s
替换
[[:space:]]
)。

这也可以通过
tr
命令完成。像这样

|tr-s[:空格:

或者

|tr-s\\n

如果只删除换行符,而不删除每行开头的空格符。

也可以使用grep:

... | grep -o '[^$(printf '\t') ].*' 
在这里,我们打印至少有一个非空白字符的行。通过使用“-o”标志,我们只打印匹配,并强制匹配从非空白字符开始

编辑:更改命令,以便删除前导空格字符


希望这能有所帮助=)

我会这么做,简短而简单:

sed 's: ::g'
将此添加到命令末尾,所有空格都将变为poof。例如,请尝试以下命令:

cat /proc/meminfo | sed 's: ::g'
<>使用<代码> GRP> ^“文件名< /代码>在打印时删除空白行。这里,从任何字符开始的行被匹配,以省去空白行。
^
表示行的开始。
检查任何字符。

很好。。。但是它不会删除非空行中的前导空格。是的,我完全没有注意到这一点=/希望这个解决方案可以在我的系统中修复它。这会删除字符“t”而不是制表符
echo“try this”| grep-o'[^\t].*
导致
ry this
再次感谢!我忘了grep不支持转义制表符。使用printf作为一种更便于携带的解决方法。第一个命令
tr-s[:space:][/code>是否将一个前导留空它压缩除一个连续空白字符外的所有字符。+1是一个简单的方法。我发现
|tr-d[:blank://code>效果很好,并且在一开始就去掉了多余的空间。这是在尝试了列表中较高的答案后,第一个适合我的答案。
cat /proc/meminfo | sed 's: ::g'