sedを使用して10個の空白文字を追加します。

sedを使用して10個の空白文字を追加します。

文字列を置き換えるスクリプトを作成しましたが、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'

注:左側のすべての項目は正規表現として処理されるため、.およびをエスケープする必要があります。$

おすすめ記事