2013-05-31 81 views
2

如何在sed中使用詳細標誌。例如。如果我使用sed命令刪除一些行,那麼我希望它們顯示在屏幕上,無論哪一行都被刪除。還讓我知道這是否可以通過腳本完成?sed:選擇刪除的顯示行

在此先感謝

+4

sed中沒有詳細標誌 – perreal

回答

5

sed沒有詳細的標誌。

不過,您可以編寫一個sed腳本,將刪除的行與其他行分隔開。您可以稍後查看已刪除的行,並決定刪除它們是否是一個好主意。

下面是一個例子。我想從test.dat中刪除以數字開頭的每一行。

$ cat test.dat 
1 First line 
2 Second line 
3 Third line 
A Keep this one 

下面是將「執行」刪除操作的sed腳本。它會查找以數字開頭的行,將它們寫入文件「deleted.dat」,然後將其從模式空間中刪除。

$ cat code/sed/delete-verbose.sed 
/^[0-9]/{ 
w /home/myusername/deleted.dat 
d 
} 

以下是運行時發生的情況。

$ sed -f code/sed/delete-verbose.sed test.dat 
A Keep this one 

這就是它寫到「deleted.dat」的內容。

$ cat deleted.dat 
1 First line 
2 Second line 
3 Third line 

當你確信腳本會做正確的事,輸出重定向到另一個文件,或編輯就地(-i選項)的文件。

3

這可能適合你(GNU sed);

sed -e '/pattern_to_delete/{w /dev/stderr' -e ';d}' input_file > output_file 

沒有詳細的標誌,但通過將要刪除的行發送到stderr,您可以實現所需的效果。