パターンに基づいてテキストファイルから行を削除する必要がありますが、最初の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'
すなわち、予約された空間を用いて、現在まで一致するパターンの発生回数を数える。効率的ではなく、明確ではありません。