パターンに基づいて行を削除しますが、最初のn個の一致する行は保持します。

パターンに基づいて行を削除しますが、最初のn個の一致する行は保持します。

パターンに基づいてテキストファイルから行を削除する必要がありますが、最初のn行はパターンと一致するようにしてください。

入力する

% 1 
% 2
% 3
% 4
% 5
text1
text2
text3

出力

%1
%2
text1
text2
text3

ファイルを使用しましたが、sed /^%/d%で始まるすべての行を削除しましたが、sed 3,/^%/dそれも機能しませんでした。パターンの最初のn行を維持し、残りは削除する必要があります。

ベストアンサー1

%put で始まるすべての行を削除し、最初の 2 行の入力を保持するには、次のようにします。

sed -e 1,2b -e '/^%/d'

以下を使用する方が明確ですがawk

awk 'NR <= 2 || !/^%/'

または公演を終えた後の場合:

{ head -n 2; grep -v '^%'; } < input-file

入力の最初の行ではない可能性がある最初の2行をパターンと一致させるには、次の方がawk確かに良いオプションです。

awk '!/^%/ || ++n <= 2'

を使用するには、sed次の技術を使用できます。

sed -e '/^%/!b' -e 'x;/xx/{h;d;}' -e 's/^/x/;x'

すなわち、予約された空間を用いて、現在まで一致するパターンの発生回数を数える。効率的ではなく、明確ではありません。

おすすめ記事