Text-Processing
刪除所有 <FOLDER> 節點!= 標記值
我知道 xml 解析器是去這裡的理想方式,但沒有一個可用或能夠添加到我的環境中。
讓我們採用遵循以下結構的 XML:
<CONTAINER> <FOLDER NAME="I_RS_INT"> </FOLDER> <FOLDER NAME="I_R_INR"> </FOLDER> <FOLDER NAME="I_RS_TRN"> </FOLDER> </CONTAINER>
在 bash 腳本中,我希望刪除
<FOLDER NAME=
匹配的*RS*
所有節點或刪除所有節點<FOLDER NAME != $var_folder
非常感謝任何幫助!
這應該這樣做:
cat /tmp/xml | sed -e '/<FOLDER NAME=.*RS.*>/ { N; d; }'
對於與兩個
/
字元之間的模式匹配的每一行,都會執行 {} 中的程式碼。N 也將下一行帶入模式空間,然後 d 在繼續下一行之前刪除整個內容。這適用於任何與 POSIX 兼容的sed
.嘗試以下方法刪除和之間的每一
<FOLDER NAME=.*RS.*>
行</FOLDER.>
:awk '/<FOLDER NAME=.*RS.*>/,/<\/FOLDER>/ {next} {print}' xmlfile
該
next
命令停止目前匹配的處理。用一個簡單的