私のアプリケーションは、Linux、MacOS、HP-UX、Sun Solaris、OSXなどのすべてのバージョンのUnixベースのオペレーティングシステムで動作します。
sed
テキストファイルから一致する文字列を削除するには、通常の場所で次のコマンドを使用します。
sed -i '/string1/d' mytextfile
これはすべての* nixで機能しますか?
答え1
はい、sed
すべてのUnixバージョンで動作します。これはPOSIX規格の一部:すべての「公式」Unixには、すべてのLinuxおよびBSDディストリビューションと同様に、この機能が含まれています。
このコマンドには、拡張子が異なるさまざまなバージョンがありますsed
。sed
オプションと言語の共通サブセットを使用する場合POSIXで説明これにより、コマンドがすべてのシステムで実行されます。
答え2
POSIXsed -i
は冗長で互換性がないため、強制されませんsed
。sed
オリジナルは編集用です。小川(したがって、名前はs
ストリームed
itor)、ファイルではありません。非対話型でファイルを編集するPOSIXの正しいツールは次のとおりです。ed
printf "/text/d\nw" | ed file.txt
残念ながら、多くの現在のシステムはed
これを廃止されたと見なし、POSIXが義務付けられているにもかかわらず基本的にこれを提供していません。ただし、少なくともほとんどのシステムに簡単にインストールできる必要があります(GNU sed Differentとは異なり、ソースからコードをコンパイルする必要があるかもしれません)。 。
編集する:また、質問の表現とは異なり、コマンドは与えられた文字列を削除すること以上を行い、d
その文字列を含むすべての行も削除します。(s)ed