生活随笔
收集整理的這篇文章主要介紹了
翻转文本
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://297020555.blog.51cto.com/1396304/645979
反轉行
與大多數 Linux 發行版中包括的 "tac" 命令一樣,該腳本將反轉文件中行的次序。"tac" 這個名稱可能會給人以誤導,因為 "tac" 不反轉行中字符的位置(左和右),而是反轉文件中行的位置(上和下)。用 "tac" 處理以下文件:
?
可以用以下 sed 腳本達到相同目的:
?
如果登錄到恰巧沒有 "tac" 命令的 FreeBSD 系統,將發現該 sed 腳本很有用。雖然方便,但最好還是知道該腳本為什么那樣做。讓我們對它進行討論。
?
首先,該腳本包含三個由分號隔開的單獨 sed 命令:'1!G'、'h' 和 '$!d'?,F在,需要好好理解用于第一個和第三個命令的地址。如果第一個命令是 '1G',則 'G' 命令將只應用第一行。然而,還有一個 '!' 字符 -- 該 '!' 字符忽略該地址,即,'G' 命令將應用到除第一行之外的?所有行。'$!d' 命令與之類似。如果命令是 '$d',則將只把 'd' 命令應用到文件中的最后一行('$' 地址是指定最后一行的簡單方式)。然而,有了 '!' 之后,'$!d' 將把 'd' 命令應用到除最后一行之外的?所有行?,F在,我們所要理解的是這些命令本身做什么。
當對上面的文本文件執行反轉腳本時,首先執行的命令是 'h'。該命令告訴 sed 將模式空間(保存正在處理的當前行的緩沖區)的內容復制到保留空間(臨時緩沖區)。然后,執行 'd' 命令,該命令從模式空間中刪除 "foo",以便在對這一行執行完所有命令之后不打印它。
現在,第二行。在將 "bar" 讀入模式空間之后,執行 'G' 命令,該命令將保留空間的內容 ("foo\n") 附加到模式空間 ("bar\n"),使模式空間的內容為 "bar\n\foo\n"。'h' 命令將該內容放回保留空間保護起來,然后,'d' 從模式空間刪除該行,以便不打印它。
對于最后的 "oni" 行,除了不刪除模式空間的內容(由于 'd' 之前的 '$!')以及將模式空間的內容(三行)打印到標準輸出之外,重復同樣的步驟。
現在,要用 sed 執行一些強大的數據轉換。
總結
以上是生活随笔為你收集整理的翻转文本的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。