2013-08-26 1591 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

可以逃脫space字符,例如增加2位:

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

你只需要一個\輸入多個空格 這樣

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