我有一個文本檔案,其中包含我試圖使其更易于閱讀的資料。某些行,例如下面的 info 2,具有多行的結果,其中有一個換行符后跟多個空格(見下文)。
info 1 : holiday
info 2: today the weather is very \n\r
hot
我想洗掉所有有換行符后跟空格的換行符。我試過使用
tr '\n\r ' ' ' < test.txt
但這會洗掉所有行尾。有沒有辦法只洗掉那些后跟空格的行尾?我有很多小檔案要回圈播放。
提前感謝您的幫助!
uj5u.com熱心網友回復:
tr用于翻譯字符。它將第一組中的字符替換為第二組中的字符。這是一組字符,對于 tr,字符集中的順序無關緊要(那么多)。
有沒有辦法
是的,您必須匹配換行符后跟空格并洗掉它們。請注意,大多數 unix 工具都適用于換行符,您必須使用適用于整個檔案的工具。例如,使用 GNU sed:
sed -z 's/\n\r //'
uj5u.com熱心網友回復:
嘗試
cat your_file | tr "\r\n" "#" | sed -e "s/# \ / /g" | tr "#" "\n"
替換文本中不存在的任何符號上的“#”
uj5u.com熱心網友回復:
你可以用sed這個
$ sed ':a;N;s/\(\\n\\r\)\?\n \ \(.*\)/\2/;ba' input_file
info 1 : holiday
info 2: today the weather is very hot
uj5u.com熱心網友回復:
使用 perl:
perl -p0e 's/ *\r\n / /g' test.txt
uj5u.com熱心網友回復:
您可以將所有行讀入模式空間,然后匹配換行符\n\r并在組中至少捕獲一個空格。
在替換中\1,對捕獲空間的反向參考。
sed ':a;$!{N;ba};s/\n\r\([[:blank:]]\)/\1/g' file
替換后的輸出:
info 1 : holiday
info 2: today the weather is very hot
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/497976.html
