sed で次のエラーが発生しました。 ...不明なコマンド: `

sed で次のエラーが発生しました。 ...不明なコマンド: `

特定の行番号で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中心のデータを編集するために行中心ツールを使用していることを無視してください。

文字列を含む<!--行の前に文字列を挿入するには、次のように使用します。Deepsed

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

おすすめ記事