最初の空行を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と最初の一致する行の間の行にのみ次を適用する^$
」という意味です。代替式^$
もチェックされるため、実際に変更される唯一の行は、一致する最初の行、^$
つまり最初の空行です。