我有:
/.*213[0-9]\{3\}.*/ {p}
打印以 213
开头的 6 位数字的所有行
但希望更新为打印以 213
或 214
开头的 6 位数字的所有行
认为这应该有效:
/.*213[0-9]\{3\}.*|.*214[0-9]\{3\}.*/ {p}
或
/.*213|214[0-9]\{3\}.*/ {p}
但我认为语法或逻辑是错误的。
有人可以帮忙吗?
谢谢
最佳答案
试试这个,
/.*21[34][0-9]\{3\}.*/ {p}
扩展命令,
sed -n '/.*21[34][0-9]\{3\}.*/{p}' file
- 请参阅正则表达式部分,
/.*21[34][0-9]\{3\}.*/
。其中,第一个数字必须是2
,第二个数字必须是1
,第三个数字[34]
必须是 3 或 4后跟任何三位数。如果满足条件,就会打印相应的行。
关于regex - 我可以在 SED 地址中乘以模式匹配来打印吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24139747/