我有一些bash变量,我想替换我所拥有的文本文件中的一些行 只有这些变量的值。
举一个人为的例子。
假设我有一个名为test的文件(数字表示行号,而不是文件中的文本。)
我想将第3行替换为第45 56
行。在我的bash文件中,我存储了
XL = 45,XU = 56,我试过
XL=45
XU=56
sed -i '3s/.*/ $XL $XU/' test
然而,这取代了$ XL和$ XU的第三行而不是它们的实际值。 我该怎么做呢?
我知道明显的解决方案是用sed命令替换$ XL和$ XU 实际值,但我想在我的长文本文件中替换许多这样的行。所以我想在顶部将XL和XU定义为变量,所以我不必在任何地方改变我的值。
答案 0 :(得分:6)
使用双引号:
sed -i "3s/.*/ $XL $XU/" test
单引号可防止变量扩展。
答案 1 :(得分:5)
awk
版本
$ cat file
Mary
Had
A Little
Lamb
$ awk 'NR==3 {$0=l}1' l="$XL $XU" file
Mary
Had
45 56
Lamb