[问题] 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