用bash脚本替换一行

时间:2013-05-30 02:13:40

标签: bash

我正在尝试替换我的文件行。我用了

line=" abc"
sed -i "3c ${line}" test.txt

它有效,但第一个空间没有出现。我希望test.txt中的第3行是

 abc

而不是

abc

注意abc之前有空格。谢谢你的任何建议!

2 个答案:

答案 0 :(得分:1)

line="\ abc"
sed -i "3c\
$line" test.txt

逃离空间将使其不被修剪。

答案 1 :(得分:0)

sed替换命令的语法是's/match/replacement/'。为了找到abc并替换它,你需要做类似的事情:

line=" abc"
sed -i "s/^abc$/$line/" test.txt

字符^$分别是行的开头和结尾的正则表达式元字符。因此,^abc$只匹配包含该模式的行,然后将abc替换为前面的空格。