2013-10-23 88 views
0

我有幾個bash變量,我想用文本文件替換一些文本文件中的某些行,但只有這些變量的值與 。使用sed替換文本文件中的行

給出一個人造的例子。

說我有一個文件名爲test(該數字表示行號,而不是文件中的文本。)

  1. 瑪麗
  2. 只好
  3. 一個小
  4. 羔羊

我想用行45 56替換行號3。在我的bash文件我已存儲 XL = 45和徐= 56,我試圖

XL=45 
XU=56 
sed -i '3s/.*/ $XL $XU/' test 

但是這個替換$ XL和$許,而不是其實際值的第三行。 我該怎麼做?

我知道顯而易見的解決方案是將sed命令中的$ XL和$ XU替換爲 的實際值,但我想在我的長文本文件中替換很多這樣的行。所以我想在頂部定義XL和XU作爲變量,所以我不必在任何地方改變我的值。

+0

嘗試雙引號。 – Gene

回答

6

使用雙引號:

sed -i "3s/.*/ $XL $XU/" test 

單引號防止變量擴展。

5

awk版本

$ cat file 
Mary 
Had 
A Little 
Lamb 

$ awk 'NR==3 {$0=l}1' l="$XL $XU" file 
Mary 
Had 
45 56 
Lamb 
+2

+1不允許代碼注入。 –

+0

@anishsane感謝編輯:) – Jotne