2013-02-07 38 views
0

SED -e '/圖案/ {d; N}'SED -e '/圖案/ {d; N}'

SED -e '/圖案/ {d}'

這些是在Linux上有兩個相同的命令? 把n放在最後有意義嗎?

從 「人的sed」,我得到:

N還N讀/輸入的下一行追加到模式空間。

其實,我讀了這條線(U-Boot的helper.mk):

sed -n -e '/.*\.u_boot_list[^ ]\+/ ! {d;n}' \ 
     -e 's/.*\(\.u_boot_list[^ ]\+\).*$$$$/\1/' \ 
     -e 's/\.[^\.]\+$$$$//' \ 
     -e ':s /^.\+$$$$/ { p;s/^\(.*\)\.[^\.]*$$$$/\1/;b s }' 

回答

0

的兩個命令存在服務於兩個不同的(雖然看似相似)的目的。然而,在你的情況下,「n」是多餘的。回憶:

「n」命令將打印出當前模式空間(除非使用「-n」標誌),清空當前模式空間並讀入下一行輸入。

「d」命令刪除當前模式空間,讀入下一行,將新行插入模式空間,並中止當前命令,並在第一個sed命令開始執行。這被稱爲開始一個新的「循環」。

本簡介摘自the grymoire site。你可以閱讀更多關於使用多行here的信息。