我需要替换几个文件中的子字符串,其中只知道子字符串的开头和结尾,并且其间的内容可以是长度和类型的变量
我尝试使用Regex但无法确定模式
E.g。以下是一些行
Dragon Age Inquisition有成人锁定模式,让孩子不使用
巫师3有一个锁定模式,以便孩子们不能使用它
超级马里奥对成年人有锁定,只有孩子才能使用
我希望在所有3行
上用'check'替换'Lock'和'so'之间的所有内容提前致谢:)
答案 0 :(得分:3)
sed -i '' 's/Lock.*so/check/' filename
Lock
和so
完全匹配,.*
匹配它们之间的任何子字符串。它匹配最长的子字符串,因此如果该行上有多个so
,它将替换所有内容直到最后一个。
答案 1 :(得分:0)
示例:
# repperl.pl
s/(Lock).+(so)/\1 check \2/
使用以下命令运行:
perl -p repperl.pl < repperl.txt
输出:
Dragon Age Inquisition has a Lock check so that kids don't use it
Witcher 3 has a Lock check so that kids cannot use it
Super Mario has a Lock check so that only kids can use it
它以这种方式编写,因此您可以在适当的位置修改文件;请参阅“Perl -i”,或只使用sed
/ awk
。