Shell删除选项卡/空格

use*_*294 10 grep

我已经使用了一个带有sed和cut过滤器的grep命令,它基本上将我的输出转换为与此类似的东西

    this line 1


    this line 2


    another line 3


    another line 4
Run Code Online (Sandbox Code Playgroud)

我试图得到一个输出没有行之间和行前面的空格所以它看起来像

    this line 1
    this line 2
    another line 3
    another line 4
Run Code Online (Sandbox Code Playgroud)

我想添加另一个| 过滤

amd*_*mdn 11

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

| sed -e 's/^\s*//' -e '/^$/d' 
Run Code Online (Sandbox Code Playgroud)

维基百科有关sed的文章中有一个例子,它使用d命令删除空白或仅包含空格的行,我的解决方案使用转义序列\s来匹配任何空格字符(空格,制表符等),这里是维基百科的例子:

sed -e '/^ *$/d' inputFileName 
Run Code Online (Sandbox Code Playgroud)
  • 插入符号(^)匹配行的开头.
  • 美元符号($)与行尾相匹配.
  • 星号(*)匹配前一个字符的零次或多次出现.


ase*_*ovm 8

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

| tr -s [:space:]

或者

| tr -s \\n

如果你只想删除换行符,而不是每行开头的空格字符.

  • 第一个命令`tr -s [:space:]`不会留下一个前导空白吗? - 它挤压除了一个连续的空格字符之外的所有字符. (4认同)
  • 我发现`| tr -d [:blank:]` 运行良好,它在开始时摆脱了额外的空间。 (2认同)

Ces*_*ian 5

我将简短而简单地做到这一点:

sed 's: ::g'
Run Code Online (Sandbox Code Playgroud)

在命令末尾添加它,所有空格都将变为空白。例如,尝试以下命令:

cat/proc/meminfo | sed 's: ::g'
Run Code Online (Sandbox Code Playgroud)