如何从 shell 中的文件范围中删除空白行

如何从 shell 中的文件范围中删除空白行

我有一个这样的文件:

something

import (
    "foo1"
    "foo2"
    "foo3"

    "bar"

    "baz"
 )

something

something

我想要一个 shell 命令,结果会将文件更改为:

something

import (
    "foo1"
    "foo2"
    "foo3"
    "bar"
    "baz"
 )

something

something

或者换句话说,删除到import (结束范围内的空行)并保留前后的空行。

答案1

sed适合于此:

sed '/^import/,/^[[:space:]]*)/ { /^[[:space:]]*$/ d; }'

此命令指示sed删除 ( )位于从“import”开始并以右括号 ( ) 结尾的行块内的d每个空行 ( )/^[[:space:]]*$//^import/,/^[[:space:]]*)/

相关内容