sed コマンドは空行を 2 行の内容に置き換えます。

sed コマンドは空行を 2 行の内容に置き換えます。

最初の空行を2行の内容に置き換えるには?問題があると思います。vim sedで複数の空行を単一の空行に置き換えるしかし、これに適応する方法をよく理解していません。たとえば、私の入力ファイルが次のような場合:

% abd
% def

% jkl

% mno

sedコマンドで置き換えたい最初次の2行を含む空行(1つを含むghi、もう1つを含む%):

% abd
% def
% ghi
%
% jkl

% mno

ベストアンサー1

Sed は改行以外の行全体と一致するため、空行は単なる空の文字列です。を使用して^行の先頭と末尾を一致させることで、空行を一致させることができます$^$次に置き換えてください% ghi\n%

sed 's/^$/% ghi\n%/'

% ghiすでに既存の改行が保持されているため、1行%と次の行で終わります。


編集する:一度だけ一致させると、式は少し複雑になります。私が知っている最も簡単な方法sedは次のとおりです。

sed '0,/^$/ s/^$/% ghi\n%/'

代替エントリはアドレス範囲内に含まれます0,/^$/。これは、「0と最初の一致する行の間の行にのみ次を適用する^$」という意味です。代替式^$もチェックされるため、実際に変更される唯一の行は、一致する最初の行、^$つまり最初の空行です。

おすすめ記事