我有一個相當大的csv文件,其中每行應以管道(|)結尾,並且如果它沒有將下一行組合到它中,直到再次找到管道。這需要使用shell腳本完成。如果沒有以管道結尾,合併csv行
我得到的回答是
awk '!/|$/{l=l""$0|next|}{print l""$0|l=""}' file
但它給我的錯誤是每一行的大小對我來說是相當大的。我發現我應該使用Perl來做到這一點,並嘗試了下面的東西,但它確實產生了期望的結果。
perl -pe 's/^\n(|\n)/ /gs' input.csv > output.csv
我的數據看起來像
A|1|abc|<xml/>|
|2|def|<xml
>hello world</xml>|
|3|ghi|<xml/>|
和所需的輸出應該
A|1|abc|<xml/>|
|2|def|<xml>hello world</xml>|
|3|ghi|<xml/>|
顯然行大小比這裏的樣品輸入相當大。
任何幫助將不勝感激。
對不起,我現在已經糾正它。它是我正在尋找的管道。剛剛嘗試你的解決方案。 – Junaid
儘管如此,如果所有行都以管道(|)結尾,那麼您的解決方案仍然是個小問題,如果腳本不需要任何更改,那麼腳本不會輸出任何要打印行的內容。 – Junaid
你是wrong.its工作,即使所有的行都以pipe.check結束:http://ideone.com/YmHlud – Vijay