web-dev-qa-db-ja.com

特定の行にスペースを挿入したsed挿入行

「Hello world」のように、先頭にスペースのある行があります。この行をファイルの特定の行に挿入したい。たとえば、次のファイルに「hello world」を挿入します

hello
world

結果:

hello
    hello world
world

私はこのsedスクリプトを使用しています:

sed -i "${line} i ${text}" $file

問題は、スペースなしで新しい行を取得していることです:

hello
hello world
world
52
Yo Al

space文字をエスケープして、たとえば2つのスペースを追加できます。

sed -i "${line} i \ \ ${text}" $file

または、text変数の定義でそれを行うことができます。

text="\ \ hello world"
70
Atropo

必要なのは\このように複数の空白を入力するには

sed -i "${line} i \    ${text}" $file
18
LeoChu
$ a="  some string  "
$ echo -e "hello\nworld"
hello
world
$ echo -e "hello\nworld" | sed "/world/ s/.*/${a}.\n&/" 
hello
  some string  .
world

.は、後続のホワイトスペースが保持されることを示すために、上記の置換に追加されました。つかいます sed "/world/ s/.*/${a}\n&/"代わりに。

4
devnull