sed 4.4はどの区切り文字をサポートしていますか?

sed 4.4はどの区切り文字をサポートしていますか?

私はこれら2つのsedコマンドが同じであると予想しましたが、mozilla/DST_Root_CA_X3.crt2番目の場合にのみ削除されます。なぜですか?

重要な場合は、sed 4.4とDebian Stretchを使用しています。

(stretch-arm64)ubuntu@ip-10-1-2-224:~$ sudo sed '#^mozilla/DST_Root_CA_X3.crt$#d' test-certificates.conf
mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
mozilla/XRamp_Global_CA_Root.crt
mozilla/certSIGN_ROOT_CA.crt
mozilla/ePKI_Root_Certification_Authority.crt
mozilla/emSign_ECC_Root_CA_-_C3.crt
mozilla/emSign_ECC_Root_CA_-_G3.crt
mozilla/emSign_Root_CA_-_C1.crt
mozilla/emSign_Root_CA_-_G1.crt
mozilla/DST_Root_CA_X3.crt

(stretch-arm64)ubuntu@ip-10-1-2-224:~$ sudo sed '/^mozilla\/DST_Root_CA_X3.crt$/d' test-certificates.conf
mozilla/Verisign_Class_3_Public_Primary_Certification_Authority_-_G3.crt
mozilla/XRamp_Global_CA_Root.crt
mozilla/certSIGN_ROOT_CA.crt
mozilla/ePKI_Root_Certification_Authority.crt
mozilla/emSign_ECC_Root_CA_-_C3.crt
mozilla/emSign_ECC_Root_CA_-_G3.crt
mozilla/emSign_Root_CA_-_C1.crt
mozilla/emSign_Root_CA_-_G1.crt

ベストアンサー1

以下の内容はすべてsedGNUだけでなく、どこでも機能しますsed

キャラクター#コメントです。これは「コメントコマンド」と見なすことができ、sed残りのディレクティブは無視できます。だからあなたの命令はする何も起こらないでしょう。

#アドレスとして使用される正規表現の代替区切り文字として使用するには、を使用します\#...##代替区切り文字として使用したい文字には特別なものではありません。

そのキャラクターできないこの場合に使用される区切り文字はバックスラッシュと改行です。マルチバイト文字の使用も通常サポートされていません。

特別なエスケープなしでコマンド()#で区切り文字として使用できます。ss#...#...#


#単純なコメント文字以上の役割を果たす唯一のケースは、sed最初の2文字が編集スクリプトにあるときです#n。これはオプションをsed使用して実行するのと同じです-n(各サイクルの終わりに編集バッファのデフォルト出力をオフにする)。

$ echo hello | sed -e 'y/h/y/'
yello
$ echo hello | sed -e '#n' -e 'y/h/y/'
$ echo hello | sed -e '#n' -e 'y/h/y/' -e p
yello

おすすめ記事