
想去掉注释的脚本如下:
(代码中放大的字段就是注释行)
PROCESS=$(ps | grep "dnsmasq" | grep -v "grep")
if [ -z "$PROCESS" ]; then
/opt/etc/init.d/xxxxx start
/opt/etc/init.d/xxxx start
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 fi done done fi (代码中放大的字段就是注释行)
我想把加注释的指定行都去掉 (注释命令前面有多个 TAB 切分),各位大侠我用 sed 该怎么写这个命令!
1 lavadore 2015-09-20 00:54:41 +08:00 既然该行的内容是固定的,直接替换就行了啊 |
2 qq674949301 OP @lavadore 白说!有时候判断需要去掉注释运行,有时候不需要! |
3 lavadore 2015-09-20 01:03:32 +08:00 @qq674949301 不明白你在说什么,给个例子呗 |
4 qq674949301 OP @lavadore 比如我 if 判断这条命令需要执行,就得去掉注释!否则就不必执行该命令!不是简单的单一命令执行到底! TAT |
5 cxbig 2015-09-20 01:32:27 +08:00 请问你放大的: - /jffs/iptables rules - /jffs/iptables flush 都是从 0 列开始的?还有操作系统是什么? Mac 、 Linux 的参数不一样 |
6 lavadore 2015-09-20 02:09:25 +08:00 @qq674949301 很简单啊,去掉注释就直接把注释行替换为非注释行啊,有什么问题么?除非你之后还需要把该行给注释掉。 比如直接 sed 's/#\/jffs\/iptables rules/\/jffs\/iptables rules/g' |
7 qq674949301 OP @cxbig 不是从 0 列开始的!#注释后面隔着好几个 TAB 切分! |
8 qq674949301 OP @lavadore 谢谢!我试试! |
9 qq674949301 OP @lavadore 这个应该是从 0 列开始替换的吧!我的注释后面隔了几个 tab |
10 cxbig 2015-09-20 09:59:03 +08:00 Mac 下的写法: sed -E 's/#(['$'\t'' ]*\/jffs\/iptables (rules|flush ))/\1/' |
11 qq674949301 OP @cxbig 是在 linux 下的,刚才每一次说清楚,对不起啊! |
12 lavadore 2015-09-20 10:49:33 +08:00 @qq674949301 sed 替换是任何位置, tab 不影响的 |
14 cxbig 2015-09-20 17:13:41 +08:00 @qq674949301 sed -r 's/#(['$'\t'' ]*\/jffs\/iptables (rules|flush ))/\1/' <file> |