[問題] shell script 的regular expression

看板Linux作者 (我是伍佰)時間14年前 (2011/05/14 15:54), 編輯推噓0(009)
留言9則, 2人參與, 最新討論串1/1
請問版上大大一個case 今天我想將一個文字檔中的一行文字 取代成多行文字 又想只取代一次 請問sed有辦法這麼做嗎 如下 假設是一個xml檔 <aaa> <name>ok</name> <value>222</value> </aaa> <aaa> <name>no</name> <value>222</value> </aaa> 假如我想將其中一個 </aaa> 取代成 </aaa> <aaa> <name>hi</name> <value>222</value> </aaa> (也就是我想增加一筆資料) 請問sed有辦法這樣用嗎 感謝~~ 只取代一個似乎試不太出來= = -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.72.226 ※ 編輯: new1025 來自: 140.116.72.226 (05/14 15:55)

05/14 16:07, , 1F
直接 >> filename ?
05/14 16:07, 1F

05/14 16:12, , 2F
對 最後會輸出一個新檔 不過想不到sed指令該怎麼下= =
05/14 16:12, 2F

05/14 16:16, , 3F
N=`wc -l < foo`; cat foo | eval "sed '${N}s/abc/xxx/'"
05/14 16:16, 3F

05/14 16:16, , 4F
>>就是加到檔案尾了呀
05/14 16:16, 4F

05/14 16:19, , 5F
echo "asdf" >> filename.xml
05/14 16:19, 5F

05/14 16:25, , 6F
謝謝c大 因為檔案尾還有另一個標籤</bbb> 所以可能沒法直
05/14 16:25, 6F

05/14 16:26, , 7F
接加 但倒是給了我另一個想法 因為</bbb>是唯一的 乾脆直
05/14 16:26, 7F

05/14 16:26, , 8F
接搜尋取代</bbb>就好了 好笨竟然沒想到= =
05/14 16:26, 8F

05/14 16:34, , 9F
問題解決了 感謝c大~ !
05/14 16:34, 9F
文章代碼(AID): #1DpZLBQ7 (Linux)