在Linux尾隨反斜線(\)結束的行(BusyBox的,QNAP的NAS)我想用SED通過腳本添加一些額外的路徑,我.bashrc
文件。該文件的相關部分看起來如下:插入(或追加)使用SED
[...]
export PATH=\
/bin:\
/sbin:\
/usr/bin:\
/usr/sbin:\
/usr/local/bin
[...]
額外線(在原始文件中第4位)被插入爲/opt/bin:/opt/sbin:\
。爲了做到這一點,我的sed單線程看起來像這樣:
sed '4i/opt/bin:/opt/sbin:\\' .bashrc > .bashrc.tmp
,正確地轉義尾部反斜槓。不知怎的,sed的轉換剩餘\'
成一個換行符吃起來尾部的反斜槓,導致:
[...]
export PATH=\
/opt/bin:/opt/sbin:
/bin:\
[...]
添加第三個反斜槓給我尾部的反斜槓,但仍增加了換行,所以
sed '4i/opt/bin:/opt/sbin:\\\' .bashrc > .bashrc.tmp
結果到
export PATH=\
/opt/bin:/opt/sbin:\
/bin:\
如果我在sed的命令添加一個額外的空間
sed '4i/opt/bin:/opt/sbin:\\ ' .bashrc > .bashrc.tmp
一切看起來不錯,但我在行尾也得到了額外的空間。
export PATH=\
/opt/bin:/opt/sbin:\ # extra space here
/bin:\
什麼了,現在關鍵是第二sed命令刪除後面的空格
#!/bin/sh
sed -e '4i/opt/bin:/opt/sbin:\\ ' .bashrc > .bashrc.tmp
sed -e 's/[ \t]*$//' .bashrc.tmp > .bashrc.tmp2 # change \t to real tab
但我仍想知道爲什麼SED正在轉變\'
成一個換行符,以及如何解決上述工作一個簡單的單線?我怎樣才能插入(或附加)用斜槓線使用的sed? 在此先感謝。
作品般的魅力,謝謝。 – skipperTux 2010-11-05 20:18:23
克里斯托夫,您可以通過點擊「嘀」接受的答案。 – 2011-01-10 20:58:47