示例:将所有CPP文件中的__cplusplus替换为 __cplusplus_xsz
perl -p -i -e "s/__cplusplus/__cplusplus_xsz/g" *.cpp
分隔符是可以换为其它的:以避免你的关键字字符串中有分隔符。
perl -p -i -e "s|__cplusplus|__cplusplus_xsz|g" *.cpp
如果提示:
syntax error at -e line 1, at EOF
说明你的字符串中有需要转义的。典型的如 '{'
你可以通过一个个的来尝试判断是哪个字符需要转义处理。例如你怀疑 '\'
perl -p -i -e "s|\|aa|g" a.txt 看看还有没有错误提示。
修复aix下此类编译错误:line 405.4: 1506-191 (E) The character @ is not a valid C source character.
perl -p -i -e "s|///@\}|//|g" *.h
perl -p -i -e "s|///@\{|//|g" *.h
perl -p -i -e "s|///@\}||g" libwebsockets/include/libwebsockets/*.h
perl -p -i -e "s|///@\{||g" libwebsockets/include/libwebsockets/*.h
perl -p -i -e "s|//@\}||g" libwebsockets/include/libwebsockets/*.h
perl -p -i -e "s|//@\{||g" libwebsockets/include/libwebsockets/*.h
perl -p -i -e "s|///@\}||g" libwebsockets/include/libwebsockets/abstract/protocols/*.h
perl -p -i -e "s|///@\{||g" libwebsockets/include/libwebsockets/abstract/protocols/*.h
perl -p -i -e "s|//@\}||g" libwebsockets/include/libwebsockets/abstract/protocols/*.h
perl -p -i -e "s|//@\{||g" libwebsockets/include/libwebsockets/abstract/protocols/*.h
linux下替换的内容包含换行符该怎么做呢:
如文件中有以下三行:
/usr/bin/test
/usr/bin/backup_cleaner
/usr/bin/test2
需要将第二行删除,可以采用如下命令
sed -i ":a;N;s|\n/usr/bin/backup_cleaner||g;ta" *.spec
实际我使用时,有一部分.spec文件中第二行没有被替换,原因不明。使用了如下命令后,才替换掉:
sed -i ":a;N;s|\n/usr/bin/backup_cleaner||g;$!ba" *.spec (与上一命令相比,只是末尾为g;$!ba)
替换内容中只是包含空格,如/usr/bin/backup_cleaner前面有空格,需要一起去除掉。可以用以下perl或sed命令都行。
perl -p -i -e "s| /usr/bin/backup_cleaner||g" *.spec
sed -i "s| /usr/bin/backup_cleaner||g" *.spec