001、
[root@PC1 test]# ls a.txt [root@PC1 test]# cat a.txt ## 測試資料 01 02 03 04 kk 05 06 07 08 09 10 11 12 [root@PC1 test]# sed '' a.txt ## 說明在預設情況下,sed會原樣輸出的 01 02 03 04 kk 05 06 07 08 09 10 11 12 [root@PC1 test]# sed -n '' a.txt ## -n選項遮蔽了資料的原樣輸出
。
002、
[root@PC1 test]# ls a.txt [root@PC1 test]# cat a.txt ## 測試資料 01 02 03 04 kk 05 06 07 08 09 10 11 12 [root@PC1 test]# sed -n '/kk/p' a.txt ## 說明-p會輸出匹配的行 03 04 kk [root@PC1 test]# sed -n '/kk/{n;p}' a.txt ## 為什麼輸出了匹配行的下一行。 匹配行為kkk,但是n選項會讀入下一行,然後p輸出。 (此處的n跟 前邊的-n不是一個東西!!!) 05 06
。
003、
[root@PC1 test]# ls a.txt [root@PC1 test]# cat a.txt ## 測試資料 01 02 03 04 kk 05 06 07 08 09 10 11 12 [root@PC1 test]# sed -n '/kk/p' a.txt ## -n遮蔽原始資料, p輸出匹配行 03 04 kk [root@PC1 test]# sed -n '/kk/{n;p}' a.txt ## n選項讀取了下一行放入模式空間,但是隻對讀取的第二行進行處理 05 06 [root@PC1 test]# sed -n '/kk/{N;p}' a.txt ## N選項讀取了下一行放入模式空間,會將兩行當作一行來處理 03 04 kk 05 06
。
004、
[root@PC1 test]# ls a.txt [root@PC1 test]# cat a.txt ## 測試資料 01 02 03 04 kk 05 06 07 08 09 10 11 12 [root@PC1 test]# sed 'N;p' a.txt ## 首選輸出基礎的行,因為沒有-n, 然後N每次讀入下一行,兩行當作一行,p輸出,因為沒兩行重複一次 01 02 03 04 kk 01 02 03 04 kk 05 06 07 08 05 06 07 08 09 10 11 12 09 10 11 12 [root@PC1 test]# sed 'n;p' a.txt ## 首先輸出基礎行(如果不是首先輸出基礎行,則第一行是03 04 kk),然後n讀取下一行,但是隻把讀入的下一行放入模式空間, 因此是沒兩行處理一次,進輸出第二行 01 02 03 04 kk 03 04 kk 05 06 07 08 07 08 09 10 11 12 11 12
。