SEDはmoi(逆参照問題)を迅速に解決しようとしますか?

SEDはmoi(逆参照問題)を迅速に解決しようとしますか?

取り出そうとしています。第三この行のサブ式:

#EXTRA_GROUPS="dialout cdrom floppy audio video plugdev users"

adduser.conf疑問に思う人のためにはい、そのファイルがあります):

sed 's/\(EXTRA_GROUPS=\)\("\)\(.*\)\("\)/\3/' adduser.conf

これが働いて生産している間

#dialout cdrom floppy audio video plugdev users

#(表現から記号は省略しましたので無視してください)、

sed 's/\(EXTRA_GROUPS=\)\("\)\(.*\)\("\)//3' adduser.conf

そうではなく、ファイルをそのまま残します。

最後の例では、逆参照番号3を削除する必要があることを知っていますが、/sd/3(「3番目のサブ式を」sdに置き換えます)を使用してコマンドを変更すると、実際には何もしません。

-n //p同じ結果を得るために、options-allを使用してコマンドを実行してみました。

sed私はDebian JessieコンピュータでGNUバージョン4.2.2を使用しています。

コアユーティリティ「教育」の一部のコア部分を見逃していますか?それともしばらく太陽から外れていましたか?

答え1

これ/n バナー代替コマンドは何のs関係もsedありません逆参照 \n

  • たとえば、s/regex/string/3現在の行の3番目の項目をに置き換えることができます。regexstring
  • を使用すると、s/regex/\3/最初のアイテムをregex3番目のキャプチャグループに置き換えることができます。
  • を使用すると、s/regex/\3/33番目の一致をregex3番目のキャプチャグループに置き換えることができます。

この場合は、おそらく次のようなより簡単なものを使用します。

sed 's/^.*EXTRA_GROUPS="\([^"]*\)".*$/\1/'

文字列を使用しない場合、文字列のビットをキャプチャすることは役に立ちません。

関連情報