私は文字列とファイルを受け取りました。最初の30行の間に指定された文字列を含む行を削除する必要があります。次のようなことを試しました。sed -i '/pattern/1,30d' filename
しかし、エラーが発生します。具体的には、私が望むのは、sedが最初の30行だけを分析し、与えられたパターンが見つかったらその行を削除することです。
答え1
少なくともGNU sedを使うと可能です。
sed '1,30{/pattern/d}' file
縮小テスト:次file
のように提供されます。
some line
pattern
other line
some line
pattern
other line
それから
$ sed '1,3{/pattern/d}' file
some line
other line
some line
pattern
other line
答え2
sed
以下でhead
使用できますtail
。
( head -n30 file | sed '/pattern/d' ; tail -n+31 file ) > newfile
またはPerlを使用して:
perl -i~ -ne 'print if $. > 30 or not /pattern/' file