刪除某個目錄下所有文件中的所有空行的最簡單方法-sed


刪除某個目錄下所有文件中的所有空行

1 目標

本文是為了給大家提供一個“刪除某個目錄下所有文件中的所有空行”的最簡單的方法,沒有之一。

2 背景

這次到背景出差,臨時需要將Oracle數據庫中的數據導出為文本文件,然后導入到人大金倉數據庫。導出時一切順利,導入時發現無法導入,原因是我導出的文件中有空行,因為Oracle導出時是分批導出的,每批導出2000行,每批之間有一個空行。
那么,我就需要刪除導出的文件中的所有的空格。

3 解決方案

如果是一個文件,那也簡單,只要 vim 打開文件,然后輸入 :%s/^\n//g ,進行全局替換,就能去掉所有的空行。

但是當時的需求是Oracle導出了幾十個表的數據,也就是說,我要刪除掉幾十個文檔中的空行。如果一個個文檔去處理,工作量有點大,而且可能處理錯誤,或漏掉某個文檔。
此時sed 這個神器該閃亮登場了!
首先打開linux終端,進入到存放導出文件的目錄中,然后執行命令 sed -i '/^\s*$/d' * ,一下子就處理好了,而且執行效率賊高,當時很多文件都是幾十萬行,幾百萬行,幾分鍾就處理好了。
該命令意思是匹配並處理當前目錄下的所有文件,^\s*$ 表示用正則表達式匹配每個文件中的空行, d 表示刪除匹配到的行, 前面的 -i 參數,表示直接操作文件,即直接修改文件本身,如果不加參數 -i,則只會將去掉空行后的文件內容直接打印到屏幕上,而不會修改文件本身。

4 擴展

  1. sed命令真的很厲害,不僅僅可以刪掉空行,也可以刪除任意正則表達式匹配的行,當然,它還有其他很多牛逼的功能,這里就不再擴展了。
  2. 當然,也要注意到,sed直接操作文件的時候,一定要謹慎,一不小心就把重要內容刪除了,找都找不回來,所以我們執行該命令前一定要做好備份,同時先進行測試看是否達到了預期效果。


免責聲明!

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



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