在Linux中如何刪除文件中的空行
有時(shí)你可能需要在 Linux 中刪除某個(gè)文件中的空行。如果是的,你可以使用下面方法中的其中一個(gè)。有很多方法可以做到,但我在這里只是列舉一些簡單的方法。
你可能已經(jīng)知道 grep、awk 和 sed 命令是專門用來處理文本數(shù)據(jù)的工具。
如果你想了解更多關(guān)于這些命令的文章,請(qǐng)?jiān)L問這幾個(gè) URL:在 Linux 中創(chuàng)建指定大小的文件的幾種方法,在 Linux 中創(chuàng)建一個(gè)文件的幾種方法 以及 在 Linux 中刪除一個(gè)文件中的匹配的字符串。
這些屬于高級(jí)命令,它們可用在大多數(shù) shell 腳本中執(zhí)行所需的操作。
下列 5 種方法可以做到。
sed:過濾和替換文本的流編輯器。grep:輸出匹配到的行。cat:合并文件并打印內(nèi)容到標(biāo)準(zhǔn)輸出。tr:替換或刪除字符。awk:awk 工具用于執(zhí)行 awk 語言編寫的程序,專門用于文本處理。perl:Perl 是一種用于處理文本的編程語言。
我創(chuàng)建了一個(gè) 2daygeek.txt 文件來測(cè)試這些命令。下面是文件的內(nèi)容。
$ cat 2daygeek.txt2daygeek.com is a best Linux blog to learn Linux.It's FIVE years old blog.This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.He got two GIRL babys.Her names are Tanisha & Renusha.
現(xiàn)在一切就緒,我們準(zhǔn)備開始用多種方法來驗(yàn)證。
使用 sed 命令
sed 是一個(gè)流編輯器。流編輯器是用來編輯輸入流(文件或管道)中的文本的。
$ sed '/^$/d' 2daygeek.txt2daygeek.com is a best Linux blog to learn Linux.It's FIVE years old blog.This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.He got two GIRL babes.Her names are Tanisha & Renusha.
以下是命令展開的細(xì)節(jié):
sed: 該命令本身。//: 標(biāo)記匹配范圍。^: 匹配字符串開頭。$: 匹配字符串結(jié)尾。d: 刪除匹配的字符串。2daygeek.txt: 源文件名。
使用 grep 命令
grep 可以通過正則表達(dá)式在文件中搜索。該表達(dá)式可以是一行或多行空行分割的字符,grep 會(huì)打印所有匹配的內(nèi)容。
$ grep . 2daygeek.txtor$ grep -Ev "^$" 2daygeek.txtor$ grep -v -e '^$' 2daygeek.txt2daygeek.com is a best Linux blog to learn Linux.It's FIVE years old blog.This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.He got two GIRL babes.Her names are Tanisha & Renusha.
以下是命令展開的細(xì)節(jié):
grep: 該命令本身。.: 替換任意字符。^: 匹配字符串開頭。$: 匹配字符串結(jié)尾。E: 使用擴(kuò)展正則匹配模式。e: 使用常規(guī)正則匹配模式。v: 反向匹配。2daygeek.txt: 源文件名。
使用 awk 命令
awk 可以執(zhí)行使用 awk 語言寫的腳本,大多是專用于處理文本的。awk 腳本是一系列 awk 命令和正則的組合。
$ awk NF 2daygeek.txtor$ awk '!/^$/' 2daygeek.txtor$ awk '/./' 2daygeek.txt2daygeek.com is a best Linux blog to learn Linux.It's FIVE years old blog.This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.He got two GIRL babes.Her names are Tanisha & Renusha.
以下是命令展開的細(xì)節(jié):
awk: 該命令本身。//: 標(biāo)記匹配范圍。^: 匹配字符串開頭。$: 匹配字符串結(jié)尾。.: 匹配任意字符。!: 刪除匹配的字符串。2daygeek.txt: 源文件名。
使用 cat 和 tr 命令 組合
cat 是串聯(lián)(拼接)的簡寫。經(jīng)常用于在 Linux 中讀取一個(gè)文件的內(nèi)容。
cat 是在類 Unix 系統(tǒng)中使用頻率很高的命令之一。它提供了常用的三個(gè)處理文本文件的功能:顯示文件內(nèi)容、將多個(gè)文件拼接成一個(gè),以及創(chuàng)建一個(gè)新文件。
tr 可以將標(biāo)準(zhǔn)輸入中的字符轉(zhuǎn)換,壓縮或刪除,然后重定向到標(biāo)準(zhǔn)輸出。
$ cat 2daygeek.txt | tr -s '\n'2daygeek.com is a best Linux blog to learn Linux.It's FIVE years old blog.This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.He got two GIRL babes.Her names are Tanisha & Renusha.
以下是命令展開的細(xì)節(jié):
cat: cat 命令本身。tr: tr 命令本身。|: 管道符號(hào)。它可以將前面的命令的標(biāo)準(zhǔn)輸出作為下一個(gè)命令的標(biāo)準(zhǔn)輸入。s: 替換標(biāo)數(shù)據(jù)集中任意多個(gè)重復(fù)字符為一個(gè)。\n: 添加一個(gè)新的換行。2daygeek.txt: 源文件名。
使用 perl 命令
Perl 表示實(shí)用的提取和報(bào)告語言。Perl 在初期被設(shè)計(jì)為一個(gè)專用于文本處理的編程語言,現(xiàn)在已擴(kuò)展應(yīng)用到 Linux 系統(tǒng)管理,網(wǎng)絡(luò)編程和網(wǎng)站開發(fā)等多個(gè)領(lǐng)域。
$ perl -ne 'print if /\S/' 2daygeek.txt2daygeek.com is a best Linux blog to learn Linux.It's FIVE years old blog.This website is maintained by Magesh M, it's licensed under CC BY-NC 4.0.He got two GIRL babes.Her names are Tanisha & Renusha.
以下是命令展開的細(xì)節(jié):
perl: perl 命令。n: 逐行讀入數(shù)據(jù)。e: 執(zhí)行某個(gè)命令。print: 打印信息。if: if 條件分支。//: 標(biāo)記匹配范圍。\S: 匹配任意非空白字符。2daygeek.txt: 源文件名。
























