仅当一行以@符号开头并且还包含一个“A”字符时,我才需要匹配该行。尝试使用 grep -P 方法来实现此目的。
区域文件片段:
@ IN SOA some.bogus.com hostmaster.bogus.com. (
@ IN A 12.34.56.789
IN A 012.345.678.9
@ 1800 IN AAAA 789237:mou68:028n:0000:8afn:
@ IN NS ns500.mydummy.server.
@ IN TXT "v=spf1 mx ~all"
使用
grep -P "(^|\s)\K@(?=\s|$)" myzonefile.com
获取带有@符号的行就好了,但是如何修改它以获取带有@符号和单个“A”字符的行?
这个
grep -P '(?=.*@)(?=.*A)' myzonefile.com
得到了第二行,这是正确的,但也得到了SOA行,这是我不想要的。
这个
grep -E '\b[A]\s' myzonefile.com
只获取所有带有单个“A”字符的行,但我无法包含 AND 操作来也匹配 @ 符号,而无需管道到另一个 grep。所以不是一个选择。
我应该使用 sed 还是 awk 更适合?
grep -P '(^|\s)\K@(?=\s).*?\sA\s' myzonefile.com