我有其在系统地址读取一条线,其中可以存在01-47之间一个通配符号(在特定的地址将是像环??。host.com)快速AWK格式问题
我试图让AWK使用正则表达式
识别的条件论证任何这些数字的到目前为止,这是我想出了,但它似乎是不正确的
/ring[0-4][0-7].host.com/{ (rest of blah blah blah goes here)}
我知道,这可能给我值00,但我可以安全地假设在这种情况下,它将在01-47连接。
在此先感谢您的帮助!
我有其在系统地址读取一条线,其中可以存在01-47之间一个通配符号(在特定的地址将是像环??。host.com)快速AWK格式问题
我试图让AWK使用正则表达式
识别的条件论证任何这些数字的到目前为止,这是我想出了,但它似乎是不正确的
/ring[0-4][0-7].host.com/{ (rest of blah blah blah goes here)}
我知道,这可能给我值00,但我可以安全地假设在这种情况下,它将在01-47连接。
在此先感谢您的帮助!
你可以使用一些花哨的正则表达式,或者你可以简单地测试如果数字不等于“00”和小于或等于47. GNU awk
,或许你可以尝试这样的事:
awk -r '/ring[0-9]{2}\.host\.com/ { string = substr($0, 5, 2); if (string != "00" && string <= 47) print }' file.txt
如果 “00” 为你操心,唯一的情况怎么样:
awk '/ring[0-4][0-7]\.host\.com/ && !/ring00\.host\.com/{blahblah}'
例如:
kent$ echo "ring00.host.com
dquote> ring01.host.com
dquote> ring10.host.com"|awk '/ring[0-4][0-7]\.host\.com/ && !/ring00\.host\.com/'
ring01.host.com
ring10.host.com
如果“39”也是有效的,你的正则表达式将不起作用。你必须提取2digits并做一些像史蒂夫那样的事情。
如果你想要严格01至47:(0[1-9]|[123][0-9]|4[0-7])
+1我会记住这一点! – Steve
非常感谢!我发现我的核心问题是愚蠢的(忘了一个字段标记为$),但这帮助我了错误陷阱! –