想去掉注释的脚本如下:
(代码中放大的字段就是注释行)
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> |