2017-04-05 62 views
1

test.sed:反向输出在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

你能描述你想要什么来实现的,而不是让人们解析你的正则表达式? –

回答

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