linux中刪除文件內空白行的幾種方法。


linux中刪除文件內空白行的幾種方法

有時你可能需要在 Linux 中刪除某個文件中的空行。如果是的,你可以使用下面方法中的其中一個。有很多方法可以做到,但我在這里只是列舉一些簡單的方法。

你可能已經知道 grepawk 和 sed 命令是專門用來處理文本數據的工具。

下列 5 種方法可以做到。

◈ sed:過濾和替換文本的流編輯器。

◈ grep:輸出匹配到的行。

◈ cat:合並文件並打印內容到標准輸出。

◈ tr:替換或刪除字符。

◈ awk:awk 工具用於執行 awk 語言編寫的程序,專門用於文本處理。

◈ perl:Perl 是一種用於處理文本的編程語言。

我創建了一個 2daygeek.txt 文件來測試這些命令。下面是文件的內容。

 

1 yck@yck-virtual-machine:~$ cat 2dayweek.txt 
2 hello world!
3 
4 can you tell me yout name?

 

 

 

現在一切就緒,我們准備開始用多種方法來驗證。

使用 sed 命令

sed 是一個流編輯器stream editor。流編輯器是用來編輯輸入流(文件或管道)中的文本的。

 

1 yck@yck-virtual-machine:~$ sed '/^$/d' 2dayweek.txt 
2 hello world!
3 can you tell me yout name?

 

以下是命令展開的細節:

◈ sed: 該命令本身。

◈ //: 標記匹配范圍。

◈ ^: 匹配字符串開頭。

◈ $: 匹配字符串結尾。

◈ d: 刪除匹配的字符串。

◈ 2daygeek.txt: 源文件名。

使用 grep 命令

grep 可以通過正則表達式在文件中搜索。該表達式可以是一行或多行空行分割的字符,grep 會打印所有匹配的內容。

 

1 yck@yck-virtual-machine:~$ grep -v "^$" 2dayweek.txt 
2 hello world!
3 can you tell me yout name?

 

以下是命令展開的細節:

◈ grep: 該命令本身。

◈ .: 替換任意字符。

◈ ^: 匹配字符串開頭。

◈ $: 匹配字符串結尾。

◈ E: 使用擴展正則匹配模式。

◈ e: 使用常規正則匹配模式。

◈ v: 反向匹配。

◈ 2daygeek.txt: 源文件名。

使用 awk 命令

awk 可以執行使用 awk 語言寫的腳本,大多是專用於處理文本的。awk 腳本是一系列 awk 命令和正則的組合。

 

1 yck@yck-virtual-machine:~$ awk '!/^$/' 2dayweek.txt 
2 hello world!
3 can you tell me yout name?

 

以下是命令展開的細節:

◈ awk: 該命令本身。

◈ //: 標記匹配范圍。

◈ ^: 匹配字符串開頭。

◈ $: 匹配字符串結尾。

◈ .: 匹配任意字符。

◈ !: 刪除匹配的字符串。

◈ 2daygeek.txt: 源文件名。

使用 cat 和 tr 命令 組合

cat 是串聯(拼接)concatenate的簡寫。經常用於在 Linux 中讀取一個文件的內容。

cat 是在類 Unix 系統中使用頻率最高的命令之一。它提供了常用的三個處理文本文件的功能:顯示文件內容、將多個文件拼接成一個,以及創建一個新文件。

tr 可以將標准輸入中的字符轉換,壓縮或刪除,然后重定向到標准輸出。

 

1 yck@yck-virtual-machine:~$ cat 2dayweek.txt |tr -s '\n'
2 hello world!
3 can you tell me yout name?

 

以下是命令展開的細節:

◈ cat: cat 命令本身。

◈ tr: tr 命令本身。

◈ |: 管道符號。它可以將前面的命令的標准輸出作為下一個命令的標准輸入。

◈ s: 替換標數據集中任意多個重復字符為一個。

◈ \n: 添加一個新的換行。◈ 2daygeek.txt: 源文件名。

使用 perl 命令

Perl 表示實用的提取和報告語言Practical Extraction and Reporting Language。Perl 在初期被設計為一個專用於文本處理的編程語言,現在已擴展應用到 Linux 系統管理,網絡編程和網站開發等多個領域。

 

1 yck@yck-virtual-machine:~$ perl -ne 'print if /\S/' 2dayweek.txt 
2 hello world!
3 can you tell me yout name?

 

以下是命令展開的細節:

◈ perl: perl 命令。

◈ n: 逐行讀入數據。

◈ e: 執行某個命令。

◈ print: 打印信息。

◈ if: if 條件分支。

◈ //: 標記匹配范圍。

◈ \S: 匹配任意非空白字符。

◈ 2daygeek.txt: 源文件名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM