sed
如何使用特殊符号进行操作?我正试图
这是我的脚本(它修复了Ubuntu下的Qt项目文件,'cos Ubuntu没有qt-multimadia):
OldInclude='QT += multimedia'
NewInclude='
INCLUDEPATH += //usr//include//QtMobility
INCLUDEPATH += //usr//include//QtMultimediaKit'
find -iname "*.pro" -type f -exec sed -i "s/$OldInclude/$NewInclude/g" {} \;
在档案中:
#-------------------------------------------------
#
# Project created by QtCreator 2013-03-07T02:19:23
#
#-------------------------------------------------
QT += multimedia
QT -= gui
TARGET = MultiItem
TEMPLATE = lib
DEFINES += MULTIITEM_LIBRARY
SOURCES += multiitem.cpp
//Even more lines here
但它没有取代任何东西 - 看起来我对输入字符串做错了。
如何准确更换它们?我要更新的文件如下:
答案 0 :(得分:0)
如果你想让sed放入换行符,你需要在替换中使用\ n字符:
$ OldInclude='QT += multimedia'
$ NewInclude='\nINCLUDEPATH += /usr/include/QtMobility\nINCLUDEPATH += /usr/include/QtMultimediaKit'
$ sed "s@$OldInclude@$NewInclude@g" your_snippet.txt
产生我认为你想要的结果。