Text-Processing

csv文件中的意外換行符

  • April 30, 2019

我有一個帶有一些意外換行符的 csv 文件。該文件看起來或多或少像這樣:

col1; col2; col3; col4
1a;   1b;   1c;  1d   
2a;   2b;   2c   
;2d                   # this should be in the row above 
3a;   3b;   3c;  3d

我想連接以;之前行開頭的每一行,然後將其刪除。我怎樣才能做到這一點?

$ sed -e '
   :loop
      $!N
      s/\n;/;/
   tloop
   P;D
' file.csv

隨時在模式空間中保留 rwo 行。如果分號出現在下一行的開頭,則刪除換行符並循環返回以將下一行讀入模式空間。

當下一行沒有分號時,退出循環,列印到第一個換行符,刪除該部分並返回並在下一行附加到模式空間。

awk怎麼樣:

awk -F ';' '{while (NF < 4) {getline nextline; $0 = $0 nextline}} 1' file

引用自:https://unix.stackexchange.com/questions/516242