1. 程式人生 > >sed進階教程

sed進階教程

定址規則

常規定址

  • 如果沒有指定地址,那麼命令將應用於每一行。
  • 如果只有一個地址,那麼命令應用於與這個地址匹配的任意行。
  • 如果指定了由逗號分隔的兩個地址,那麼命令應用於匹配第一個地址(不包括第一個地址)到匹配第二個地址的行(包括此行)。
  • 如果地址後面跟有感嘆號(!),那麼命令就應用於不匹配該地址的所有的行。

舉例

ed中使用定址擴大受命令影響的行數;sed使用定址限制受命令影響的行數。

測試文字:list

John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 
11345 Oak Bridge Road, Tulsa OK Terry Kalkas, 402 Lans Road, Beaver Falls PA Eric Adams, 20 Post Road, Sudbury MA Hubert Sims, 328A Brook Road, Roanoke VA Amy Wilde, 334 Bayshore Pkwy, Mountain View CA Sal Carpenter, 73 6th Street, Boston MA
View Code

刪除所有行

d

刪除首行

1d

刪除尾行

$d

刪除空行

/^$/d

刪除了從第一行直到第一個空行的所有的行,可用它來刪除儲存在檔案中的Internet郵件訊息中的郵件頭。

1,/^$/d

巢狀定址

sed使用大括號{}將一個地址巢狀在另一個地址中,或者在相同的地址上應用多個命令。

舉例

/ˆ\.TS/,/ˆ\.TE/{
    /ˆ$/d
    s/ˆ\.ps 10/.ps 8/
    s/ˆ\.vs 12/.vs 10/
}
View Code

書寫要求

左大括號必須在行末

右大括號本身必須單獨佔一行

確保在大括號之後沒有空格。