GNU拡張なしでBSD sedを使用すると、以下の例と同様の操作を実行できますが、行番号の代わりに(実際の番号を指定する代わりに)パターンが発生する最初の行で置き換えが行われます。 ?
行番号の制限
最も単純な制限は行番号です。
行3の最初の数字を削除するには、コマンドの前に「3」を追加します。
sed '3 s/[0-9][0-9]*//' <filename >newfilename
答え1
{ sed -Ee'/[0-9]+/{s///;q;}'; cat; } <in >out
^BSDと連携する必要がありますsed
。しかし、明らかにそうではありません。
だから:
sed -e'/[0-9][0-9]*/{s///;:b' -e'n;bb' -e\} <in >out
...それらのどれとも働くべきです。
答え2
これは完璧に動作します。
sed '1,/abc/s/abc/xyz/' ファイル.txt
次のように省略できます。
sed '1,/abc/s//xyz/' ファイル.txt
GNUとBSDとの互換性:
sed '1,/[0-9][0-9]*/s///' <ファイル名> 新しいファイル名