シェルのファイル範囲から空白行を削除する方法

シェルのファイル範囲から空白行を削除する方法

次のファイルがあります。

something

import (
    "foo1"
    "foo2"
    "foo3"

    "bar"

    "baz"
 )

something

something

ファイルを次のように変更するシェルコマンドが必要です。

something

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

something

something

つまり、import (範囲の終わりまで空白行を削除し、)前後の空白行を保持します。

答え1

sedこれに適しています:

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

このコマンドは、sed「import」で始まり、閉じ括弧()で終わる行ブロック内のdすべての空行()を削除()するように指示します。/^[[:space:]]*$//^import/,/^[[:space:]]*)/

関連情報