其實我有一個XML文件。下面是文件的內容。在awk中按固定寬度拆分行
<charge_amt>1.90</charge_amt>
<charge_amt>-89</charge_amt>
我想分開費用(1.90)並檢查它是否爲負值。如果非負,以0
輸出更換費用:
<charge_amt>0</charge_amt>
<charge_amt>-89</charge_amt>
請幫我在這。
其實我有一個XML文件。下面是文件的內容。在awk中按固定寬度拆分行
<charge_amt>1.90</charge_amt>
<charge_amt>-89</charge_amt>
我想分開費用(1.90)並檢查它是否爲負值。如果非負,以0
輸出更換費用:
<charge_amt>0</charge_amt>
<charge_amt>-89</charge_amt>
請幫我在這。
嘗試sed
:
sed -e '[email protected]<charge_amt>[^-][^<]*</charge_amt>@<charge_amt>0</charge_amt>@g' <file> newfile
請注意,這不會起到很好,如果你在文本中有空格,則charge_amt
節點,或任何其他有趣的企業,在屬性。所以要非常小心,在出現問題時首先使用真正的XML解析器。
謝謝nneonneo!你能否描述「@」和「[^ - ] [^ <] *」的含義。你爲什麼使用它? – 2013-02-16 08:30:40
'@'只是分隔正則表達式各部分的分隔符。 '[^ - ]'表示「任何東西,但 - 字符」。 '[^ <] *'表示「除了<」以外的任何字符序列。 – nneonneo 2013-02-16 16:56:25
所以,你用'awk'編輯XML?看起來並不特別健壯。這與固定寬度有什麼關係?爲什麼你必須使用'awk'? – nneonneo 2013-02-16 07:46:42
我們可以用其他方法做到這一點嗎?其實文件太大,這就是爲什麼我試圖用awk – 2013-02-16 07:51:40