詳解linux 刪除換行符的方法

這篇文章主要介紹了linux 刪除換行符的方法小結,需要的朋友可以參考下

今天需要刪除文件里面的換行符,比如有一個文件a.txt:

1,2,3  4,5,6  1,2,3  4,5,6  1,2,3  4,5,6  1,2,3  4,5,6  1,2,3  4,5,6

1、使用vim刪除換行符

vim輸入命令:%s/ //g

2、使用sed命令,例如 sed ‘:t;N;s/ //;b t’ a.txt

結果:1,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,61,2,34,5,6

解釋一下:

:t?定義label?"t"  b?t?轉到label?"t"?繼續執行  N?先讀入一行到sed的模板空間,加個換行符( ),再向sed模板空間追加下一行(之后sed?對模板空間中的內容執行s/ /,/替換,并顯示替換后的內容)

3、使用td命令,例如:

cat?a.txt?|?tr?' '?'?'?  1,2,3?4,5,6?1,2,3?4,5,6?1,2,3?4,5,6?1,2,3?4,5,6?1,2,3?4,5,6

注意tr最后那個參數是空格,否則會報錯

linux shell 中刪除文件的所有換行符

需要做一個小功能,就是把一個文本文件中的所有換行符都去掉。一般肯定是想到使用sed來修改啦。但是我搜了一下,并沒有找到sed要怎么輸入 ——我知道^M對應的是 ,但是 卻失敗了,在命令行中直接被切割掉。
  原則上可以用 這樣的方式來指定的,但是我實際操作發現并不行,沒有效果。所以最終我只能用直接輸入命令來做了(還沒驗證過寫成腳本是否能用)。

假設要替換的文件叫做in.txt,輸出文件為out.txt:

sed?'s/^M//g'?file.txt?>?tmp.txt  sed?-i?'s/"/"/g'?tmp.txt  rm?-f?out.txt;?touch?out.txt  cat?tmp.txt?|?xargs?echo?-n?>>?out.txt  rm?-f?tmp.txt

五個步驟分別為:

將Windows格式的換行轉換成UNIX格式,也就是刪除所有的 字符。其中^M并不是直接輸入這兩個字符,而是通過在shell里面按住 Ctrl+V,然后再敲 M 得到的
將所有的雙引號轉義,因為后面的echo需要使用
創建一個全空的輸出文件
刪除所有的 字符并輸出最終文件
刪除中間文件

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享