90

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

hello
world

結果:

hello
    hello world
world

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

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

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

hello
hello world
world
4

4 に答える 4

115

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

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

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

text="\ \ hello world"
于 2013-08-26T08:25:09.590 に答える
5
$ 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&/"代わりに使用してください。

于 2013-08-26T08:29:34.770 に答える
0

次のように式を分割することで実行できます。

sed -i $file -e '2i\' -e "     $text"

これは、スクリプト作成を容易にするための GNU 拡張機能です。

于 2020-04-11T15:01:27.057 に答える