我正在設置變量$hack
,我想在a text file的第一行之後擴展和插入。第一行包含這樣的文字:project(libpyside)
如何在使用sed時展開變量?
嘗試這樣:
$ sed -i "s|project(libpyside)|project(libpyside)\n$hack|" CMakeLists.txt
sed: -e expression #1, char 124: unterminated `s' command
...這:
$ sed -i "/project(libpyside)/ r $hack" CMakeLists.txt
sed: -e expression #1, char 222: unknown option to `s'
...這:
$ sed -i -e "2i${hack}" CMakeLists.txt
sed: -e expression #1, char 201: unknown option to `s'
這是我的$hack
變量:
hack='#HACK: CMake with broken Qt5Qml_PRIVATE_INCLUDE_DIRS, Qt5Quick_PRIVATE_INCLUDE_DIRS
if(${Qt5Qml_FOUND})
if(NOT "${Qt5Qml_PRIVATE_INCLUDE_DIRS}" MATCHES "/QtQml/")
string(REPLACE "/QtCore" "/QtQml" replaceme "${Qt5Core_PRIVATE_INCLUDE_DIRS}")
list(APPEND Qt5Qml_PRIVATE_INCLUDE_DIRS ${replaceme})
list(REMOVE_DUPLICATES Qt5Qml_PRIVATE_INCLUDE_DIRS)
endif()
endif()
if(${Qt5Quick_FOUND})
if(NOT "${Qt5Quick_PRIVATE_INCLUDE_DIRS}" MATCHES "/QtQuick/")
string(REPLACE "/QtCore" "/QtQuick" replaceme "${Qt5Core_PRIVATE_INCLUDE_DIRS}")
list(APPEND Qt5Quick_PRIVATE_INCLUDE_DIRS ${Qt5Qml_PRIVATE_INCLUDE_DIRS})
list(APPEND Qt5Quick_PRIVATE_INCLUDE_DIRS ${replaceme})
list(REMOVE_DUPLICATES Qt5Quick_PRIVATE_INCLUDE_DIRS)
endif()
endif()'
我在做什麼錯?
我不把它放到文件中的原因是我在Dockerfile中做了所有這些。
這種威力要比使用變量更好... http://stackoverflow.com/questions/16715373/insert-contents-of-a-file-after-specific-pattern-match ..和'sed -i'兩次是錯字? – Sundeep
錯字固定。 'sed -i「/ project(libpyside)/ r $ {hack}」CMakeLists.txt「給了我'sed:-e表達式#1,字符222:未知選項到\'s'' – fredrik
您必須確保, $ hack在Sed語法中包含正則表達式。你的例子表明情況並非如此。你的問題不是如何擴展,而是如何引用。 – ceving