关于 sed 去掉注释

2015-12-08 17:06:10 +08:00
 qq674949301
```shell
#!/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 前面加了$变量的原因,如果不加可以去掉注释!
请问各位该如何修改这个命令去实现!
3733 次点击
所在节点    问与答
8 条回复
Earthman
2015-12-08 17:58:39 +08:00
好久没写 sed/awk 了,提个思路,忽略第一行,忽略每行开头的空白[[:space:]],删掉#开头的就行
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
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
qq674949301
2015-12-08 18:18:10 +08:00
@sualwu 有很多 iptables 规则!这只是部分我想去掉注释的!如果这样就全部去掉注释了!
qq674949301
2015-12-08 18:19:35 +08:00
@sualwu 非常感谢您的回答!只是去掉注释#而不是去掉注释行!能不能再原命令上修改一下呢?
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
uuspider
2015-12-08 18:37:44 +08:00
sed 's/#\(iptables -t nat -I PREROUTING -p $PRE\)/\1/'
qq674949301
2015-12-08 18:48:57 +08:00
@sualwu @uuspider 非常感谢!

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

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

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

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

© 2021 V2EX