特定の行番号でxmlタグを置き換えるコードがあります。
LineNum=`grep -n "Deep" file.xml | cut -d: -f 1 | awk -F '[\t]' '{$NF = $NF -1;}1'`
sed "${LineNum}s#^<Deep>#<!--<Deep>#" file.xml
コマンドの実行中に次の例外が発生しました。
sed -e expression #1, char 7: unknown command `'
誰でもこの問題に対する解決策を提供できますか?
ベストアンサー1
明らかに、行中心ではなくXML中心のデータを編集するために行中心ツールを使用していることを無視してください。
文字列を含む<!--
行の前に文字列を挿入するには、次のように使用します。Deep
sed
sed '/Deep/ s/^/<!--/' file.xml >newfile.xml
grep
私が知っている限り、最初に別のツールを使用して行番号を計算する必要はありません。
<!--
行の先頭に文字列を挿入しますか?以上行に何が含まれていても、Deep
次を使用します。
sed -e '1 { h; d; }' -e '/Deep/ { x; s/^/<!--/; x; }' -e x -e '$ { p; x; }' file.xml >newfile.xml
あるいは、ファイルがメモリに簡単に入ることができる場合は、エディタed
スクリプトを作成してください(実際にはこれが最も柔軟なアプローチです)。
printf '%s\n' 'g/Deep/-1 s/^/<!--/' 'w newfile.xml' 'q' | ed -s file.xml