- 論壇徽章:
- 1
|
本帖最后由 mingming_song 于 2012-11-30 00:45 編輯
# cat test
111111
222222
333333
444444
555555
666666
777777
888888
999999
緊接著我想測(cè)試-e的使用,所以使用如下
# sed -e '2,3d' -e '2,4d' test
111111
555555
666666
777777
888888
999999
后來(lái)自己閑的沒事,改了下上面的命令
# sed -e '2,3d' -e '2,3d' test
111111
555555
666666
777777
888888
999999
問題來(lái)了,兩條命令的結(jié)果一模一樣,于是我追蹤了sed的工作過程,如下
# ./sedsed -d --hide=hold -e '2,3d' -e '2,4d' test
PATT:111111$
COMM:2,3 d
PATT:111111$
COMM:2,4 d
PATT:111111$
111111
PATT:222222$
COMM:2,3 d
PATT:333333$
COMM:2,3 d
PATT:444444$
COMM:2,3 d
PATT:444444$
COMM:2,4 d
PATT:555555$
COMM:2,3 d
PATT:555555$
COMM:2,4 d
PATT:555555$
555555
PATT:666666$
COMM:2,3 d
PATT:666666$
COMM:2,4 d
PATT:666666$
666666
PATT:777777$
COMM:2,3 d
PATT:777777$
COMM:2,4 d
PATT:777777$
777777
PATT:888888$
COMM:2,3 d
PATT:888888$
COMM:2,4 d
PATT:888888$
888888
PATT:999999$
COMM:2,3 d
PATT:999999$
COMM:2,4 d
PATT:999999$
999999
再來(lái)
#
[root@song ~]# ./sedsed -d --hide=hold -e '2,3d' -e '2,3d' test
PATT:111111$
COMM:2,3 d
PATT:111111$
COMM:2,3 d
PATT:111111$
111111
PATT:222222$
COMM:2,3 d
PATT:333333$
COMM:2,3 d
PATT:444444$
COMM:2,3 d
PATT:444444$
COMM:2,3 d
PATT:555555$
COMM:2,3 d
PATT:555555$
COMM:2,3 d
PATT:555555$
555555
PATT:666666$
COMM:2,3 d
PATT:666666$
COMM:2,3 d
PATT:666666$
666666
PATT:777777$
COMM:2,3 d
PATT:777777$
COMM:2,3 d
PATT:777777$
777777
PATT:888888$
COMM:2,3 d
PATT:888888$
COMM:2,3 d
PATT:888888$
888888
PATT:999999$
COMM:2,3 d
PATT:999999$
COMM:2,3 d
PATT:999999$
999999
各位也看到了,執(zhí)行過程和結(jié)果都是一樣,可是我就不明白了,那個(gè)顏色一樣的部分是相同的執(zhí)行過程,沒什么說的,都好理解,但是不同的就是那個(gè)橙色高亮的那部分,在使用-e '2,3d' -e '2,4d'的時(shí)候能刪除第444444行我能理解,但是為什么-e '2,3d' -e '2,3d'也能對(duì)444444這行起作用?求大神解釋下-e執(zhí)行前后命令的原理,我覺得這題可能對(duì)于理解sed的模式空間執(zhí)行命令的一個(gè)過程是個(gè)不錯(cuò)的范例,可惜自己不太懂,坐等大神解釋~
后來(lái)和一些人討論還發(fā)現(xiàn)了一個(gè)問題,如果上面的命令繼續(xù)比如-e '2,3d' -e '2,3d' -e '2,3d'會(huì)發(fā)覺又多處理了一行,這個(gè)規(guī)律存在,但是我無(wú)法解釋~~
|
|