2013-08-26 7 views
25

「Hello world」のように先頭にスペースを含む行があります。 この行をファイルの特定の行に挿入したいとします。次のファイルに例 挿入 "Hello World" のための sed特定の行にスペースを入れて行を挿入します

hello 
world 

結果:

hello 
    hello world 
world 

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

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

を問題は、私は取得していますということですスペースを使った私の新しいライン:

hello 
hello world 
world 

答えて

39

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

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

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

text="\ \ hello world" 
+7

よう 複数のブランク入力する必要があります。 Sedは残りのスペースを自動的に認識しているようです。たとえば、「a \ text」は、テキストを前面に4つのスペースで付加します。 – haridsv

+0

ありがとう!そのようなエレガントなソリューション! – ShahNewazKhan

4
$ 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&/"を使用してください。

5

は、あなただけが唯一の最初のスペースをエスケープするために1 \この

sed -i "${line} i \ ${text}" $file 
関連する問題