web-dev-qa-db-ja.com

sedを使用して、テキストをスペースで置き換え、定義された変数をスラッシュで置き換えます

Sedを使用して、定義された変数で行をスペースに置き換えようとしています。

例えば、

「ダム文字列」を$ lanに置き換え、lan = "〜/ afile.py

私は線が

sed "s/a dumb string/$lan/g" file.txt

ただし、file.txtの「ダム文字列」の部分は空白のままにします。

私の問題は非常に単純なようです。どんな助けでも大歓迎です。

11
NPB

私の@lan変数にはスラッシュが含まれているため、次のコマンドを使用してsedコマンドを使用する必要があると判断しました。

例えば

sed "s:a dumb string:$lan:g" file.txt

これはおそらく初心者の間違いですが、私はsedにはあまり詳しくありません。ご協力ありがとうございました。

14
NPB

sedは変数を渡していることを認識していません-正規表現の別の部分として解釈されます。置換にスラッシュが含まれている場合は、次のように代替セパレーター文字を使用するのが最も簡単です。

sed "s|a dumb string|$lan|g" file.txt
12
FatalError

検索文字列の一部のスペースが機能しないため、centosで[[:space:]]を使用する必要がありました。

    sed -i 's/User[[:space:]]daemon/User Apache/' httpd1.conf
2
Vidya Patil