質問に答えようとしています。これにはコマンドの使用が含まれますrecode
。コマンドは特定の行を解析し、残りは変更しないでください。ファイルはxml
ファイルです。例:
<ITEM_ID>foo</ITEM_ID>
<PRODUCTNAME>bar</PRODUCTNAME>
<DESCRIPTION><p>foo</p><p> </p><p> </p></DESCRIPTION>
<URL>bar</URL>
<IMGURL>foo</IMGURL>
<IMGURL_ALTERNATIVE></IMGURL_ALTERNATIVE>
必要な出力は次のようになります。
<ITEM_ID>foo</ITEM_ID>
<PRODUCTNAME>bar</PRODUCTNAME>
<DESCRIPTION><p>foo</p><p> </p><p> </p></DESCRIPTION>
<URL>bar</URL>
<IMGURL>foo</IMGURL>
<IMGURL_ALTERNATIVE></IMGURL_ALTERNATIVE>
注:このコマンドはrecode
期待どおりに機能します。ラベル変換を避けることはDESCRIPTION
後で解決することができ、問題の一部ではありません。
変更する必要がある行はで始まる行です<DESCRIPTION>
。
私はawk
静止画を撮りませんが、予想されるコマンドは次のとおりです。
awk '/<DESCRIPTION>/ { $0 = print $0 "| recode ..html" }1' foo.txt
もちろんこれはうまくいきません。
この目標をどのように達成する必要がありますか?
ベストアンサー1
getline
出力を変数として読み取るには、awkを使用する必要があります。また、録音が期待どおりに機能するようにロケールを正しく設定する必要があります。この試み:
$ LC_ALL=C gawk '/DESCRIPTION/{
"echo \""$0"\" | recode ..html" | getline ff; print ff
}' file
<DESCRIPTION><p>foo</p><p> </p><p> </p></DESCRIPTION>