在sed中反向输出

时间:2017-04-05 16:17:51

标签: sed

test.sed:

#!/bin/sed -Ef

/^(1|\+1)\(([0-9]{3})\)(555)-([0-9]{4})/d
/^\(([0-9]{3})\)(555)-([0-9]{4})/d

file.txt的:

(123)456-7890
1(123)456-7890
+1(123)456-7890

(123)555-7890
1(123)555-7890
+1(123)555-7890

(416)736-5053
1(416)736-2100
+1(416)736-2100

当前输出:

(123)456-7890
1(123)456-7890
+1(123)456-7890


(416)736-5053
1(416)736-2100
+1(416)736-2100

预期输出:

(123)555-7890
1(123)555-7890
+1(123)555-7890

您好。我想要如上所述的预期输出,这只是在当前输出中没有拾取3个句子。

有没有办法通过-Ef标志来做到这一点?你可以添加更多标志,但我无法删除这些标志。

我尝试过以下操作,但没有效果:

/^(1|\+1)\(([0-9]{3})\)(555)-([0-9]{4})/p
/^\(([0-9]{3})\)(555)-([0-9]{4})/p

1 个答案:

答案 0 :(得分:1)

使用以下方法:

<强> test.sed:

#!/bin/sed -Ef
/\([0-9]{3}\)555-[0-9]{4}/!d 

命令:

sed -Ef test.sed file.txt

输出:

(123)555-7890
1(123)555-7890
+1(123)555-7890