[問題] sed用法

作者: tutu (小小)   2019-04-23 17:41:47
我在/tmp/下有個t.sh檔
裡面的內容 我想將其中一行後面的yes改成no
如下圖(黃色是我所下的指令)
https://imgur.com/N1FM2pW.jpg
由於t.sh檔內的yes有二處,但我只需disable=yes改no而已,
所以我下sed指令時 不能單純搜尋yes改no
目前下的指令 sed -n '/disable/p' /tmp/t.sh |sed 's/yes/no/g'
所顯示到營幕的結果是我期望的,但這指令並無真正改到檔案
試過
sed -i '/disable/p' /tmp/t.sh |sed 's/yes/no/g' (結果為多插入一行)
sed -n '/disable/p' /tmp/t.sh |sed -i 's/yes/no/g' (結果顯示要輸入檔案)
sed -n '/disable/p' /tmp/t.sh |sed -i 's/yes/no/g' /tmp/t.sh (結果二處yes都被改no)
請問大家有解法嗎
作者: karrigan912 (ez)   2019-04-23 18:02:00
sed 's/\(disable.*=\) .*/\1 no/g'
作者: clementchen (Clement Chen)   2019-04-23 19:58:00
導到一個暫存檔再mv蓋掉原檔不就好了?
作者: nastygirl (小洋蔥)   2019-04-23 22:24:00
不需要pipe sed -i 's/disable=yes/disable=no/g' t.sh
作者: jbee (時間就是曼尼)   2019-04-25 14:38:00
sed -i '/disable/{s/yes/no/g}' t.sh
作者: hijkxyzuw (i,j,k) ×(x,y,z)   2019-04-26 15:49:00
sed -i '/disable/ s/yes/no/g' t.sh
作者: rickieyang (Rickie Yang)   2019-04-26 20:34:00
為什麼全部人給的 sed 都加了 g ...
作者: holishing   2019-04-26 22:41:00
這樣有比較global (?
作者: Xunion (Xun)   2019-04-27 15:04:00
同6樓5樓才對

Links booklink

Contact Us: admin [ a t ] ucptt.com