0

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

但它什么都不能代替 - 看起来我对输入字符串做错了什么。

如何准确地替换它们?我要更新的文件如下:

4

1 回答 1

0

如果要 sed 放入换行符,则需要在替换中使用 \n 字符:

$ OldInclude='QT       += multimedia'
$ NewInclude='\nINCLUDEPATH += /usr/include/QtMobility\nINCLUDEPATH += /usr/include/QtMultimediaKit'
$ sed "s@$OldInclude@$NewInclude@g" your_snippet.txt 

产生我认为你想要的结果。

于 2013-03-07T22:19:57.790 回答