有一个名为partner的文件,例如:
abc
def
ghi
还有另一个conf文件,例如:
part=abc
var=x
var=y
id=123
part=def
var=z
id=345
等等...
我正在制作一个 shellscript,它使用 while 循环从“partner”读取行,然后使用 sed 在 conf 文件中搜索包含该合作伙伴名称的块。之后,最后使用 sed 替换 id 值(例如:从 123 到 123_1 )并将新块存储在另一个文件中。
while read -r var || [[ -n "$var" ]]
do sed -n '/part=$var/,/^$/p' conf.cfg | xargs sed 's/id=123/id=123_1/g' >> new.txt
done
我究竟做错了什么?因为它只给我空文本行作为输出。
答案1
在命令的参数中使用变量时,不能将其括在简单的引号中。
对 shell 脚本进行故障排除,尝试一个接一个地运行命令,...这将帮助您缩小问题范围。
sed -n "/part=$var/,/^$/p" conf.cfg