Sedコマンドの動作とパラメータ処理の違い

Sedコマンドの動作とパラメータ処理の違い

最近、私はsed設定ファイルで作業していました。コマンドがパラメータとは異なるsed動作をしています。-ir-ri

[root@node system]# sed -ri 's|(^[[:space:]]+[Kk]ernel.*$)|\1 transparent_hugepage=never|' temp_file
[root@node system]# echo $?
0

[root@node system]# sed -ir 's|(^[[:space:]]+[Kk]ernel.*$)|\1 transparent_hugepage=never|' temp_file
sed: -e expression #1, char 60: invalid reference \1 on `s' command's RHS
[root@node system]# echo $?
1

答え1

オプションは、入力ファイルを内部で編集するときにファイルをバックアップするために使用されるファイル名サフィックスのオプション引数を-i使用します。sedGNUの場合、sedこのオプション引数はオプションですが、指定された場合は明らかに使用されます。

Useは、ファイル名が入力ファイルの元の名前でなければならず、サフィックスとして文字を追加する必要があることをバックアップファイルに-ir通知します。現在は使用されていないため、パターンにグループがないため、式の代替部分の逆参照はもはや有効であるとは認識されません(デフォルトの正規表現を使用してパターンの一部をキャプチャする方法)。sedr-r\( ... \)

一言でsed -ri同じではありませんsed -ir

関連情報