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
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...