替換\n換行符爲實際的\n字符

shell下處理文件時,有時候有替換或去掉\n換行符號的需求。
今天我遇到了將換行符號替換成實的\n字符的需求,有點繞,示例,一篇文章內容爲:linux

line1
line2

須要將其內容變成一行,全部換行符變成字符\n,以下:git

line1nline2

若是直接用github

sed -i "s/\n/\\\n/"  #\\\n轉義 爲\n字樣

咱們會發現替換不了,由於sed每次處理完畢一行後有自動添加一行(白忙活.jpg),如之奈何?shell

若是你sed技能熟練一點,知道分支和模式空間,這就好說啦:code

sed ":tag;N;s/\n/\\\n/;b tag" file  #tag只是一個標籤名隨意

是有點頭大。說個容易懂的方法吧,利用echo不使用-e時自動去掉換行符的特色:get

echo $(sed "$ ! s/$/\\\n/" flie) > file

$表示行匹配中的最後一行,$ !即便取反,表示不匹配最後一行;
/$/不用說,學過正則就知道這是匹配行尾之意,這個命令意思是:it

  1. 將行尾(出了最後一行)變成\n(注意這裏是實際的字符\n,轉義過了,沒有換行符的特殊意義了)。因而有了:ast

    line1nline2
  2. sed幫倒忙給你加上\n換行符,因而有了:class

    line1n
    line2
  3. echo輸出自動去掉換行,因而有了line1\nline2

固然,若是隻想將換行符號換成空格,那就簡單了echo $(cat file)便可。sed

參看個人筆記

相關文章
相關標籤/搜索