に最初の行の後に展開して挿入する変数$hack
を設定しています。 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'は2回タイプミスですか? – Sundeep
入力ミスが修正されました。 "sed -i"/project(libpyside)/ r $ {hack} "CMakeLists.txt'は' sed:-e式#1、char 222:\ 's"に未知のオプションを与えます – fredrik
あなたは、 $ hackにはSed構文の正規表現が含まれています。あなたの例は、これが当てはまらないことを示しています。あなたの質問は拡大する方法ではなく、引用する方法です。 – ceving