? ? ? ?sed編輯器工具可以刪除數據流中不需要的空白行。刪除數據流中的所有空白行很容易,但要選擇性地刪除空白行則需要一點創造力。下面南昌網絡公司-百恒網絡將為大家介紹一些簡短的sed編輯器腳本,它們可以用來幫助刪除數據中不需要的空白行。?
? ? ? ?1. 刪除連續的空白行?
? ? ? ?數據文件中出現多余的空白行會非常讓人討厭。通常,數據文件中都會有空白行,但有時由于數據行的缺失,會產生過多的空白行。?
? ? ? ?刪除連續空白行的簡單辦法是用地址區間來檢查數據流,sed編輯器會對所有匹配指定地址區間的行執行該命令。?
? ? ? ?刪除連續空白行的關鍵在于創建包含一個非空白行和一個空白行的地址區間。如果sed編輯器遇到了這個區間,它不會刪除行。但對于不匹配這個區間的行(兩個或更多的空白行),它會刪除這些行。?
? ? ? ?下面是完成這個操作的腳本。?
? ? ? ?/./,/^$/!d?
? ? ? ?區間是/./到/^$/。區間的開始地址會匹配任何含有至少一個字符的行。區間的結束地址會匹配一個空行。在這個區間內的行不會被刪除。?
? ? ? ?下面是實際的腳本。?
? ? ? ?$ cat data8.txt?
? ? ? ?This is line one. ??
? ? ? ?This is line two. ?
? ? ? ?This is line three. ? ?
? ? ? ?This is line four.?
? ? ? ?$?
? ? ? ?$ sed '/./,/^$/!d' data8.txt?
? ? ? ?This is line one. ?
? ? ? ?This is line two. ?
? ? ? ?This is line three. ?
? ? ? ?This is line four.?
? ? ? ?$?
? ? ? ?無論文件的數據行之間出現了多少空白行,在輸出中只會在行間保留一個空白行。
? ? ? ?2. 刪除開頭的空白行?
? ? ? ?數據文件開頭有多個空白行時也很煩人。通常,在將數據從文本文件導入到數據庫時,空白行會產生一些空項,涉及這些數據的計算都得作廢。?
? ? ? ?刪除數據流頂部的空白行不難。下面是完成這個功能的腳本。?
? ? ? ?/./,$!d?
? ? ? ?這個腳本用地址區間來決定哪些行要刪掉。這個區間從含有字符的行開始,一直到數據流結束。在這個區間內的任何行都不會從輸出中刪除。這意味著含有字符的第一行之前的任何行都會刪除。來看看這個簡單的腳本。?
? ? ? ?$ cat data9.txt ??
? ? ? ?This is line one. ?
? ? ? ?This is line two.?
? ? ? ?$?
? ? ? ?$ sed '/./,$!d' data9.txt?
? ? ? ?This is line one. ?
? ? ? ?This is line two.?
? ? ? ?$?
? ? ? ?測試文件在數據行之前有兩個空白行。這個腳本成功地刪除了開頭的兩個空白行,保留了數據中的空白行。
?
? ? ? ?3. 刪除結尾的空白行?
? ? ? ?很遺憾,刪除結尾的空白行并不像刪除開頭的空白行那么容易。就跟打印數據流的結尾一樣,刪除數據流結尾的空白行也需要花點心思,利用循環來實現。?
在開始討論前,先看看腳本是什么樣的。?
? ? ? ?sed '{?
? ? ? ?:start?
? ? ? ?/^n*$/{$d; N; b start }?
? ? ? ?}'?
? ? ? ?注意,在正常腳本的花括號里還有花括號。這允許你在整個命令腳本中將一些命令分組。該命令組會被應用在指定的地址模式上。地址模式能夠匹配只含有一個換行符的行。如果找到了這樣的行,而且還是后一行,刪除命令會刪掉它。如果不是后一行,N 命令會將下一行附加到它后面,分支命令會跳到循環起始位置重新開始。?
? ? ? ?下面是實際的腳本。?
? ? ? ?$ cat data10.txt?
? ? ? ?This is the first line.?
? ? ? ?This is the second line. ? ?
? ? ? ?$ sed '{?
? ? ? ?> :start?
? ? ? ?> /^n*$/{$d ; N ; b start }?
? ? ? ?> }' data10.txt?
? ? ? ?This is the first line.?
? ? ? ?This is the second line.?
? ? ? ?$?
? ? ? ?這個腳本成功刪除了文本文件結尾的空白行。?
? ? ? ?關于利用sed編輯器工具來刪除數據流中不需要的空白行的方法就先介紹到這里,大家如有還有哪些不明白的地方,可來電和我們聯系,百恒網絡作為一家專業的南昌網絡公司,精通各種網絡技術,而且經驗豐富,一定可以為您解除疑惑!