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

来源:https://www.cnblogs.com/mython/archive/2019/03/20/10563823.html
-Advertisement-
Play Games

linux中刪除文件內空白行的幾種方法 有時你可能需要在 Linux 中刪除某個文件中的空行。如果是的,你可以使用下麵方法中的其中一個。有很多方法可以做到,但我在這裡只是列舉一些簡單的方法。 你可能已經知道 grep、awk 和 sed 命令是專門用來處理文本數據的工具。 下列 5 種方法可以做到。 ...


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: 源文件名。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 最近開始做研究生畢設,有一部分因為沒有什麼好的思路,就把以前用過的PCL點雲搬出來,重新用源碼裝了一遍PCL,一開始裝的過程中沒什麼大問題,在後面用的時候碰到了很多小問題,特此記錄。 1.PCL版本問題 如果你用ROS的話,安裝的時候會自帶PCL的1.7版本,不過本著用源碼安裝的習慣,我們還是從gi ...
  • 最近為了學 DevOps,自己動手在 virtualbox 上安裝 ubuntu 系統,安裝完後發現好坑,沒辦法用 XShell 連接。線上安裝 openssh-server 又發現沒有配置軟體源,手工把源地址敲上去,這個想法有點瘋狂,最後決定利用 virtualbox 的共用文件夾功能來實現拷貝, ...
  • kubernetes二進位部署 1、環境規劃 軟體 版本 Linux操作系統 CentOS Linux release 7.6.1810 (Core) Kubernetes 1.9 Docker 18.09.3 etcd 3.3.10 角色 IP 組件 推薦配置 k8s_master etcd01 ...
  • 作為一個以伺服器為主要市場的操作系統,主要就是對客戶端的請求進行響應,進行處理的。在經歷過系統鏡像安裝和本地配置好ssh功能後,接下來進行伺服器的安裝,這裡我以nginx為主,介紹一下如何安裝nginx和配置站點, 安裝要求 + linux centos7系統 + ssh軟體 nginx簡介 "ng ...
  • 前不久入職實習生,現在在幫著組裡面dalao們跑Case,時不時要上去收一下有木有Dump,每次敲命令太煩人於是逼著自己學寫Shell腳本。一開始真的是很痛苦啊,也沒能搞到書,只能憑網上半真半假的消息照葫蘆畫瓢!廢話少說,上正文! 我是分割線 就是這樣子,在想到什麼就再往上面丟點什麼吧! ...
  • 一、screen 命令不間斷會話 1、安裝screen(從系統鏡像作為yum倉庫安裝) 1.1、載入系統鏡像 1.2、mount /dev/cdrom /media/cdrom/ (掛在系統鏡像) vim /etc/fstab (添加開機啟動項) 1.3、yum倉庫配置 1.3.1、掛載系統鏡像 1 ...
  • 最近一直有安裝虛擬機的想法,今天剛剛知道win10有自帶的Linux子系統,就準備試一下: 首先要保證自己的電腦處於開發者選項: 然後就要在控制面板的程式和功能頁面點擊“啟用或者關閉WIndows功能‘ 然後愉快的等待重啟,對要很愉快! 重啟之後呢,按win+R,輸入cmd進入命令界面,輸入bash ...
  • 本文講述如何通過樹莓派的硬體PWM控制好盈電調來驅動RC車子的前進後退,以及如何驅動伺服電機來控制車子轉向。 1. 好盈電調簡介 車子上的電調型號為:WP-10BLS-A-RTR,在好盈官網並沒有搜到對應手冊,但找到一份通用RC競速車的電調使用說明,不過說明書中並沒有提及信號調製方式,繼續尋找,看到 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...