#!/bin/sh PRE1=udp --dport 53 -j REDIRECT --to-ports 5556 PRE2=tcp --dport 53 -j DNAT --to-destination $DNS:53 #iptables -t nat -I PREROUTING -p $PRE1 #iptables -t nat -I PREROUTING -p $PRE2
我写以下命令
sed -r 's/#(['$'\t'' ]*iptables -t nat -I PREROUTING -p ($PRE1|$PRE2)/\1/' patch
但是不管用,没有去掉注释,应该是 PRE 前面加了$变量的原因,如果不加可以去掉注释!
请问各位该如何修改这个命令去实现!
![]() | 1 Earthman 2015-12-08 17:58:39 +08:00 好久没写 sed/awk 了,提个思路,忽略第一行,忽略每行开头的空白[[:space:]],删掉#开头的就行 |
2 sualwu 2015-12-08 18:06:17 +08:00 ~ cat a.sh #!/bin/sh PRE1=udp --dport 53 -j REDIRECT --to-ports 5556 PRE2=tcp --dport 53 -j DNAT --to-destination $DNS:53 #iptables -t nat -I PREROUTING -p $PRE1 #iptables -t nat -I PREROUTING -p $PRE2 ~ sed -r 's/^\s+#//g' a.sh #!/bin/sh PRE1=udp --dport 53 -j REDIRECT --to-ports 5556 PRE2=tcp --dport 53 -j DNAT --to-destination $DNS:53 iptables -t nat -I PREROUTING -p $PRE1 iptables -t nat -I PREROUTING -p $PRE2 |
3 sualwu 2015-12-08 18:10:19 +08:00 去掉#后的: ~ sed -r 's/^(\s.*)(#.*)/\1/g' a.sh #!/bin/sh PRE1=udp --dport 53 -j REDIRECT --to-ports 5556 PRE2=tcp --dport 53 -j DNAT --to-destination $DNS:53 |
![]() | 4 qq674949301 OP @sualwu 有很多 iptables 规则!这只是部分我想去掉注释的!如果这样就全部去掉注释了! |
![]() | 5 qq674949301 OP @sualwu 非常感谢您的回答!只是去掉注释#而不是去掉注释行!能不能再原命令上修改一下呢? |
6 sualwu 2015-12-08 18:27:53 +08:00 ~ sed -r 's/^(\s.*#)(iptables -t nat -I PREROUTING -p \$PRE[0-9])/\2/g' a.sh #!/bin/sh PRE1=udp --dport 53 -j REDIRECT --to-ports 5556 PRE2=tcp --dport 53 -j DNAT --to-destination $DNS:53 iptables -t nat -I PREROUTING -p $PRE1 iptables -t nat -I PREROUTING -p $PRE2 |
![]() | 7 uuspider 2015-12-08 18:37:44 +08:00 sed 's/#\(iptables -t nat -I PREROUTING -p $PRE\)/\1/' |
![]() | 8 qq674949301 OP |