[英]Find a line with certain string then remove it's newline character at the end in bash
[英]In bash, replace newline in csv files, except when at line's end
我有一個巨大的 csv 文件,大約 500Mb。 字段分隔符是管道字符 (|)。 有些行包含換行符和回車符。 我需要刪除它們,但我不想刪除每行末尾的合法換行符。 我已經嘗試過使用 sed 和 tr ,如其他問題所示,但我最終刪除了所有換行符,這不是我想要的。
示例輸入( ||Yes 行應連接到前一行):
21/06/2016 18:06:32|||||||||||||||||||32 Red|Jrup Vej 6|61069849
||Yes||vals
21/06/2016 18:06:32|||||||||||||||||||101 K|Ser Bevard 110|||No|
我的嘗試:
sed -i 's/\r\n//g' myfile.csv
tr -d '\r' < myfile.csv
感謝您的幫助,喬
csv 數據通常具有固定數量的列。
在您的情況下,完整記錄似乎有 25 列。 基於此,您可以使用此 awk 命令來連接損壞的記錄:
awk -F '|' 'NF < 25 {getline s; $0 = $0 s} 1' file
21/06/2016 18:06:32|||||||||||||||||||32 Red|Jrup Vej 6|61069849||Yes||vals
21/06/2016 18:06:32|||||||||||||||||||101 K|Ser Bevard 110|||No|
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.