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
將行尾(出了最後一行)變成\n
(注意這裏是實際的字符\n
,轉義過了,沒有換行符的特殊意義了)。因而有了:ast
line1nline2
sed幫倒忙給你加上\n
換行符,因而有了:class
line1n
line2
line1\nline2
固然,若是隻想將換行符號換成空格,那就簡單了echo $(cat file)
便可。sed
參看個人筆記