如何使用perl替换文件中的String?
perl -pi -e 's/Arun/Brun/g' *
Run Code Online (Sandbox Code Playgroud)
这对我来说很好
但是,当我试图改变class/students/a到class1/students1/B它抛出错误怎么解决这个问题..我尝试添加反斜杠(\每前)( /),但它并没有帮助
perl -pi -e 's/class/students/a/class1/students1/B/g' *
Run Code Online (Sandbox Code Playgroud)
cod*_*ict 12
您正在使用/正则表达式分隔符.
还有/,即使在你的模式和更换.您需要以某种方式确保/不应将这些视为分隔符.
您有两种选择:
逃离/您的模式并替换为:
perl -pi -e 's/class\/students\/a/class1\/students1\/B/g' *
Run Code Online (Sandbox Code Playgroud)或者使用不同的分隔符:
perl -pi -e 's#class/students/a#class1/students1/B#g' *
Run Code Online (Sandbox Code Playgroud)方法2是首选,因为它让你的正则表达式短和清洁.
尝试 perl -pi -e 's{class/students/a}{class1/students1/B}g' *
任何非空白分隔符都可以替换斜杠.使用标识符中允许的字符后,在s后添加空格.(...)如果PATTERN由括号引号分隔,则REPLACEMENT有自己的引号对,可能包括或不包括引号,例如s(foo)(bar)或s/bar /.