在file.txt
我有这样的一行:
^/string string_to_be_replaced
必须成为:
^/string replaced_string
所以我创建了一个perl脚本:
perl -pi -e "s[\^/string$(.*)$] [\^/string$(.*) replaced_string]" /file.txt
但问题是perl找不到以^/string
答案 0 :(得分:1)
perl -pi -e "s[\^/string .+$][^/string replaced_string]" /file.txt
或
perl -pi -e "s[\^/string \K.+$][replaced_string]" /file.txt
答案 1 :(得分:1)
正则表达式的第一部分[\^/string$(.)$]
查找包含“^ / string”的行,后跟行尾,后跟单个字符(捕获),最后是另一行行结束。由于文件是逐行处理的(一次只查看一行),包含两个行尾的模式永远不会匹配。
你可能想要:
s[\^/string string_to_be_replaced][^/string replaced_string]
假设您只有一个string_to_be_replaced
并且只想在string
之前替换它。如果没有,那么更多细节将是有用的。