关于 sed 去掉指定行的注释问题

2015-09-20 00:49:04 +08:00
 qq674949301
想去掉注释的脚本如下:
(代码中放大的字段就是注释行)
PROCESS=$(ps | grep "dnsmasq" | grep -v "grep")
if [ -z "$PROCESS" ]; then
/opt/etc/init.d/xxxxx start
/opt/etc/init.d/xxxx start
# /jffs/iptables rules
exit 0
else
for i in `cat /var/log/server.txt`;do
for j in `cat /jffs/opt/var/log/server.txt`;do
if [ $i == $j ];then
echo "$(date ): OK" >> /var/log/xxxx.log
else
/opt/etc/init.d/xxxxxxx restart
/opt/etc/init.d/xxxxxxx restart
/opt/etc/init.d/xxxxxxx restart
# /jffs/iptables flush
fi
done
done
fi
(代码中放大的字段就是注释行)

我想把加注释的指定行都去掉 (注释命令前面有多个 TAB 切分),各位大侠我用 sed 该怎么写这个命令!
3382 次点击
所在节点    问与答
14 条回复
lavadore
2015-09-20 00:54:41 +08:00
既然该行的内容是固定的,直接替换就行了啊
qq674949301
2015-09-20 00:58:47 +08:00
@lavadore 白说!有时候判断需要去掉注释运行,有时候不需要!
lavadore
2015-09-20 01:03:32 +08:00
@qq674949301 不明白你在说什么,给个例子呗
qq674949301
2015-09-20 01:17:58 +08:00
@lavadore 比如我 if 判断这条命令需要执行,就得去掉注释!否则就不必执行该命令!不是简单的单一命令执行到底! TAT
cxbig
2015-09-20 01:32:27 +08:00
请问你放大的:
- /jffs/iptables rules
- /jffs/iptables flush
都是从 0 列开始的?还有操作系统是什么? Mac 、 Linux 的参数不一样
lavadore
2015-09-20 02:09:25 +08:00
@qq674949301 很简单啊,去掉注释就直接把注释行替换为非注释行啊,有什么问题么?除非你之后还需要把该行给注释掉。

比如直接

sed 's/#\/jffs\/iptables rules/\/jffs\/iptables rules/g'
qq674949301
2015-09-20 09:43:08 +08:00
@cxbig 不是从 0 列开始的!#注释后面隔着好几个 TAB 切分!
qq674949301
2015-09-20 09:43:30 +08:00
@lavadore 谢谢!我试试!
qq674949301
2015-09-20 09:45:50 +08:00
@lavadore 这个应该是从 0 列开始替换的吧!我的注释后面隔了几个 tab
cxbig
2015-09-20 09:59:03 +08:00
Mac 下的写法:
sed -E 's/#(['$'\t'' ]*\/jffs\/iptables (rules|flush ))/\1/'
qq674949301
2015-09-20 10:14:51 +08:00
@cxbig 是在 linux 下的,刚才每一次说清楚,对不起啊!
lavadore
2015-09-20 10:49:33 +08:00
@qq674949301 sed 替换是任何位置, tab 不影响的
cxbig
2015-09-20 17:07:47 +08:00
@lavadore 你那一句顶着写, sed 找不出来的,要把 tab 和 space 的条件带上
cxbig
2015-09-20 17:13:41 +08:00
@qq674949301
sed -r 's/#(['$'\t'' ]*\/jffs\/iptables (rules|flush ))/\1/' <file>

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/222103

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX