2017-04-05 63 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