文字列を置き換えるスクリプトを作成しましたが、10個の空白文字を再追加する必要があります。私できるスペースバーを10回押すと再び追加され動作しますが、私のスクリプトではひどいようです。
私のスクリプト:
sed -i 's/server.os[ \t]*$freebsd/server.os $linux/g' ~/var/log.txt
次のようなものを使用して、server.os
間に10個の空白文字を追加したいと思います。$linux
{whitespace*10}
メモ:
- 前に 10 個の空白文字があるので、
$freebsd
次を使用します。[ \t]*
$
この場合、変数ではありません。それは文字列の一部にすぎません。
入力例:
server.os $freebsd
希望の出力:
server.os $linux
ベストアンサー1
何でもキャプチャしてください(10、それ以上、より少ないまたはなし)元の文字列で連続したスペースとタブをグループ化し、([ \t])
エスケープ参照番号に基づいて代替文字列に戻します。\1
この場合、次のようになります。
sed -E 's/server\.os([ \t]*)\$freebsd/server.os\1$linux/g'
注:左側のすべての項目は正規表現として処理されるため、.
およびをエスケープする必要があります。$