我使用了带有 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 的维基百科文章中有一个示例,它使用 d 命令删除空白或仅包含空格的行,我的解决方案使用转义序列 \s
来匹配任何空白字符(空格、制表符和等等),这是维基百科的例子:
sed -e '/^ *$/d' inputFileName
插入符号 (^) 与行的开头匹配。tr
命令来完成。就像这样
| tr -s [:space:]
或者
| tr -s \\n
如果您只想删除换行符,而不删除每行开头的空格字符。
sed 's: ::g'
将其添加到命令末尾,所有空格都会消失。例如尝试这个命令:
cat /proc/meminfo | sed 's: ::g'
... | grep -o '[^$(printf '\t') ].*'
这里我们打印至少有一个非空白字符的行。通过使用“-o”标志,我们仅打印匹配项,并强制匹配项从非空白字符开始。
编辑:更改了命令,以便它可以删除前导空白字符。
希望这有帮助=)
grep "^." filename
删除空行。这里,以任何字符开头的行都会被匹配,从而省略空行。
^
表示行的开始。
.
检查是否有任何字符。(根据您的
sed
,您可以将
[[:space:]]
替换为\s
)。
echo $'spaces tabs\ttabs' | tr -d '\t '
输出:spacetabstabs仅删除选项卡:
echo $'spaces tabs\ttabs' | tr -d '\t'
输出:空格 tabstabs仅删除空格:
echo $'spaces tabs\ttabs' | tr -d ' '
输出:spacetabs tabs