すべての*nixに「sed」が存在しますか?

すべての*nixに「sed」が存在しますか?

私のアプリケーションは、Linux、MacOS、HP-UX、Sun Solaris、OSXなどのすべてのバージョンのUnixベースのオペレーティングシステムで動作します。

sedテキストファイルから一致する文字列を削除するには、通常の場所で次のコマンドを使用します。

sed -i '/string1/d' mytextfile

これはすべての* nixで機能しますか?

答え1

はい、sedすべてのUnixバージョンで動作します。これはPOSIX規格の一部:すべての「公式」Unixには、すべてのLinuxおよびBSDディストリビューションと同様に、この機能が含まれています。

このコマンドには、拡張子が異なるさまざまなバージョンがありますsedsedオプションと言語の共通サブセットを使用する場合POSIXで説明これにより、コマンドがすべてのシステムで実行されます。

答え2

POSIXsed -iは冗長で互換性がないため、強制されませんsedsedオリジナルは編集用です。小川(したがって、名前はsストリームeditor)、ファイルではありません。非対話型でファイルを編集するPOSIXの正しいツールは次のとおりです。ed

printf "/text/d\nw" | ed file.txt

残念ながら、多くの現在のシステムはedこれを廃止されたと見なし、POSIXが義務付けられているにもかかわらず基本的にこれを提供していません。ただし、少なくともほとんどのシステムに簡単にインストールできる必要があります(GNU sed Differentとは異なり、ソースからコードをコンパイルする必要があるかもしれません)。 。

編集する:また、質問の表現とは異なり、コマンドは与えられた文字列を削除すること以上を行い、dその文字列を含むすべての行も削除します。(s)ed

関連情報