原帖由 "waker" 發(fā)表:
#反轉(zhuǎn)一行中每個字符的順序(類似"rev"![]()
sed '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//'
###假設(shè)一行文字是 123
###那么執(zhí)行后模式空間中的內(nèi)容應(yīng)該按下邊的順序變化
執(zhí)行/\n/!G;得
123\n
然后s/\(.\)\(.*\n\)/&\2\1/;
得
123\n23\n1
執(zhí)行//D
23\n1
因為是D命令所以從頭循環(huán)
模式空間有\(zhòng)n
所以/\n/!G;中G不執(zhí)行
再來s...
23\n3\n21
再D
3\n21
循環(huán),G不執(zhí)行
再來s...
3\n\n321
再D
\n321
循環(huán)
G和s和D都不執(zhí)行
執(zhí)行最后的s/.//
321
原帖由 "waker" 發(fā)表:
試著注一下,不知道對不對
如果我們只看sed -e :a -e '$q;N;ba'
這個循環(huán)不停的讀入下 一行直到結(jié)尾,這樣整個文本就形成一個由\n分割的鏈
現(xiàn)在加上11,$D
sed -e :a -e '$q;N;11,$D;ba'
如果文本不超過10行
模式空間將保留整個文本打印出來
如果文本大于10行
從第11行開始,在下一行加入到鏈中后,模式空間第一個由\n分割的記錄將被刪除,這樣看起來就是鏈頭被鏈尾擠出整個鏈,總是保持10個鏈環(huán),循環(huán)結(jié)束后,鏈中保存的就是文件的后10行,最后印出結(jié)果
原帖由 "waker" 發(fā)表:
# print the last 10 lines of a file (emulates "tail"
#打印一個文件的后10行(仿"tail"
sed -e :a -e '$q;N;11,$D;ba'
試著注一下,不知道對不對
如果我們只看sed -e :a -e '$q;N;ba'
這個循環(huán)不停的?.........
waker01.jpg (11.48 KB, 下載次數(shù): 167)
歡迎光臨 Chinaunix (http://72891.cn/) | Powered by Discuz! X3.2 |