私は人々がpathsを扱うときに代わりに使用することを知っていますが、次の:
作業では何をしますか?/
:g
sed
引用符の間にpath1があるのはなぜですか?このコードの機能を説明できる人はいますか?
sed -i -e s:INPUT_REPLACE:"${path1}":g ${path2}
ベストアンサー1
コロンは、:
パターン(左)と代替項目(右)の間の区切り記号です。 g
sedに「グローバル」置換を実行するように指示します(与えられた行の最初の行だけを変更するのではなく、パターンに一致するすべての行のすべての項目を変更します)。
3つの区切り文字が必要なので、3つのコロンを使用します。したがって、:g
実際には、最後の区切り記号と修飾子「g」の2つがあります。
この部分の表現を引用すると"${path1}"
コマンドでエラーを引き起こすいくつかの文字が含まれています(変数を置き換えるとき)。たとえば、シェルによって渡された代替引数は、スペースまたはタブが含まれている場合はsed
2つの部分(エラー)に分割されます。
だから...このコマンドは
sed -i -e s:INPUT_REPLACE:"${path1}":g ${path2}
sed
同じファイルを読み書きするように指示します(-i
オプション)。ファイルはです${path2}
。各行の対応する文字列を含む行を見つけ、"INPUT_REPLACE"
変数の内容に置き換えます${path1}
。"INPUT_REPLACE"
すべての行のすべての項目に対してこれを行います。
注: 「${path1}」に「INPUT_REPLACE」が含まれているsed
場合、または置換が発生した場合いいえもう一度実行して交換してください。これは初期一致でのみ行われます。