【发布时间】:2016-06-23 14:32:11
【问题描述】:
我尝试替换包含制表符和换行符的文件中的字符串。 shell 文件中的命令如下所示:
FILE="/Somewhere"
STRING_OLD="line 1[ \t\r\n]*line 2"
sed -i 's/'"$STRING_OLD"'/'"$STRING_NEW"'/' $FILE
如果我手动删除换行符和制表符并只留下空格,那么我可以成功替换文件。但是如果我留下换行符,那么SED 将无法找到$STRING_OLD 并且无法替换为新字符串
提前致谢
科比
【问题讨论】:
-
您的问题的详细信息表明您最多需要在整个文件中执行一次替换。这确实是您需要的吗?
-
您的文件有多大?线可以多长?既然您使用的是 Linus,那么假设 GNU
sed的解决方案是否可以接受,或者您是否需要仅依赖 POSIXsed功能的解决方案? -
edit 你的问题要包括简洁、可测试的样本输入和预期输出,或者充其量你会得到你想要的,而不是你真正需要的。