我可以在SED地址中将模式匹配相乘以进行打印

时间:2014-06-10 11:23:31

标签: regex sed

我有:

/.*213[0-9]\{3\}.*/ {p}

打印所有包含6位数字的行213

但想要更新以打印所有包含6位数字的行213214

认为这应该有效:

/.*213[0-9]\{3\}.*|.*214[0-9]\{3\}.*/ {p}

/.*213|214[0-9]\{3\}.*/ {p}

但我认为语法或逻辑是错误的。

有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:4)

试试这个,

/.*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,后跟任意三位数字。如果条件满足,将打印相应的行。