Bash技术问题:匹配指定文本并在其后插入变量内容
解决在匹配行后插入变量内容的sed方案
我之前也碰到过类似的需求,用sed就能轻松搞定!因为你的变量里包含斜杠,直接用默认的斜杠分隔符会报错,所以换个分隔符(比如|)就很方便,直接用下面的命令:
sed "/working/a|$NEW_FILE" test1.txt
要是想直接修改原文件(记得先备份,避免误操作),加上-i参数就行:
sed -i "/working/a|$NEW_FILE" test1.txt
命令简单解释:
/working/:精准定位到包含"working"的那一行a|:a是sed的追加命令,后面跟的|是我们指定的分隔符,避开变量里的/,省得额外转义$NEW_FILE:直接引用你的变量,把内容追加到匹配行的下一行
执行后你会得到完全符合预期的结果:
Hello, World! This is not working ./location/file1 I don't know a thing about sed and awk
如果以后你的变量里出现了&这类sed的特殊字符,记得先用sed 's/\&/\\\&/g'转义变量内容,但这次你的路径变量没有特殊字符,直接用就没问题。
内容的提问来源于stack exchange,提问作者silver surfer
相关产品推荐
相关产品推荐

