【发布时间】:2018-05-31 00:13:16
【问题描述】:
这是How to use sed to replace only the first occurrence in a file? 的后续版本,但提出了更有针对性的提问。给定一个文件
Peach: data/file1.txt
Apple: data/file2.txt
Pear: data/file3.txt
Apple: data/file4.txt
目标是仅将包含 Apple 的第一行替换为包含固定字符串 (Banana) 后跟 bash 变量的新行。在新输出中,第 2 行现在是:
Banana: newdata/data.txt
这是最近的尝试...
BananaVariable=newdata
sed -i -E "0,|(Apple).*|{s|(Apple:).*|Banana: "$BananaVariable"/data.txt|}" filename
但是,这会产生错误:
sed: -e expression #1, char 3: unexpected `,'
我认为我需要 $BananaVariable 周围的双引号来转义,以便它可以插入实际字符串而不是“BananaVariable”,但我认为这些双引号导致了问题。 (操作系统为 CentOS 7,sed 为 GNU 版本)
【问题讨论】:
标签: regex bash unix sed centos7