歡迎光臨
每天分享高質量文章

在 Linux 中如何刪除檔案中的空行 | Linux 中國

有時你可能需要在 Linux 中刪除某個檔案中的空行。如果是的,你可以使用下麵方法中的其中一個。

— Magesh Maruthamuthu

 

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

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

如果你想瞭解更多關於這些命令的文章,請訪問這幾個 URL:在 Linux 中創建指定大小的檔案的幾種方法[1]在 Linux 中創建一個檔案的幾種方法[2] 以及 在 Linux 中刪除一個檔案中的匹配的字串[3]

這些屬於高級命令,它們可用在大多數 shell 腳本中執行所需的操作。

下列 5 種方法可以做到。

◈ sed:過濾和替換文本的流編輯器。
◈ grep:輸出匹配到的行。
◈ cat:合併檔案並打印內容到標準輸出。
◈ tr:替換或刪除字符。
◈ awk:awk 工具用於執行 awk 語言編寫的程式,專門用於文本處理。
◈ perl:Perl 是一種用於處理文本的編程語言。

我創建了一個 2daygeek.txt 檔案來測試這些命令。下麵是檔案的內容。

  1. $ cat 2daygeek.txt
  2. 2daygeek.com is a best Linux blog to learn Linux.
  3. It's FIVE years old blog.
  4. This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.
  5. He got two GIRL babys.
  6. Her names are Tanisha & Renusha.

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

使用 sed 命令

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

  1. $ sed '/^$/d' 2daygeek.txt
  2. 2daygeek.com is a best Linux blog to learn Linux.
  3. It's FIVE years old blog.
  4. This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.
  5. He got two GIRL babes.
  6. Her names are Tanisha & Renusha.

以下是命令展開的細節:

◈ sed: 該命令本身。
◈ //: 標記匹配範圍。
◈ ^: 匹配字串開頭。
◈ $: 匹配字串結尾。
◈ d: 刪除匹配的字串。
◈ 2daygeek.txt: 源檔案名。

使用 grep 命令

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

  1. $ grep . 2daygeek.txt
  2. or
  3. $ grep -Ev "^$" 2daygeek.txt
  4. or
  5. $ grep -v -e '^$' 2daygeek.txt
  6. 2daygeek.com is a best Linux blog to learn Linux.
  7. It's FIVE years old blog.
  8. This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.
  9. He got two GIRL babes.
  10. Her names are Tanisha & Renusha.

以下是命令展開的細節:

◈ grep: 該命令本身。
◈ .: 替換任意字符。
◈ ^: 匹配字串開頭。
◈ $: 匹配字串結尾。
◈ E: 使用擴展正則匹配樣式。
◈ e: 使用常規正則匹配樣式。
◈ v: 反向匹配。
◈ 2daygeek.txt: 源檔案名。

使用 awk 命令

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

  1. $ awk NF 2daygeek.txt
  2. or
  3. $ awk '!/^$/' 2daygeek.txt
  4. or
  5. $ awk '/./' 2daygeek.txt
  6. 2daygeek.com is a best Linux blog to learn Linux.
  7. It's FIVE years old blog.
  8. This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.
  9. He got two GIRL babes.
  10. Her names are Tanisha & Renusha.

以下是命令展開的細節:

◈ awk: 該命令本身。
◈ //: 標記匹配範圍。
◈ ^: 匹配字串開頭。
◈ $: 匹配字串結尾。
◈ .: 匹配任意字符。
◈ !: 刪除匹配的字串。
◈ 2daygeek.txt: 源檔案名。

使用 cat 和 tr 命令 組合

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

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

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

  1. $ cat 2daygeek.txt | tr -s '\n'
  2. 2daygeek.com is a best Linux blog to learn Linux.
  3. It's FIVE years old blog.
  4. This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.
  5. He got two GIRL babes.
  6. Her names are Tanisha & Renusha.

以下是命令展開的細節:

◈ cat: cat 命令本身。
◈ tr: tr 命令本身。
◈ |: 管道符號。它可以將前面的命令的標準輸出作為下一個命令的標準輸入。
◈ s: 替換標資料集中任意多個重覆字符為一個。
◈ \n: 添加一個新的換行。
◈ 2daygeek.txt: 源檔案名。

使用 perl 命令

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

  1. $ perl -ne 'print if /\S/' 2daygeek.txt
  2. 2daygeek.com is a best Linux blog to learn Linux.
  3. It's FIVE years old blog.
  4. This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.
  5. He got two GIRL babes.
  6. Her names are Tanisha & Renusha.

以下是命令展開的細節:

◈ perl: perl 命令。
◈ n: 逐行讀入資料。
◈ e: 執行某個命令。
◈ print: 打印信息。
◈ if: if 條件分支。
◈ //: 標記匹配範圍。
◈ \S: 匹配任意非空白字符。
◈ 2daygeek.txt: 源檔案名。

via: https://www.2daygeek.com/remove-delete-empty-lines-in-a-file-in-linux/

作者:Magesh Maruthamuthu[5] 選題:lujun9972 譯者:pityonline 校對:wxy

赞(0)

分享創造快樂