我需要删除行超过50,000行的.CSV文件中的新行字符。需要linux命令。

时间:2016-07-27 07:24:15

标签: unix

我有一个包含52,000行的.CSV文件。每行有13列,用分隔符' |'分隔。第11行中插入了错误的数据,并且由于文件中包含了新的行字符。我应该删除它们。

1 个答案:

答案 0 :(得分:1)

你可以试试这个;

awk -F '|' -v fields=13 '{c+=NF; s=(s?s OFS:"") $0} c>=fields{print s; s=""; c=0}' yourfile.csv


user@host:/tmp$cat test
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11
|12|13
1|2|3|4|5|6|7|8|9|10|
11|12|13


user@host:/tmp$ awk -F"|" -v fields=13 '{f+=NF; str=(str?str OFS:"") $0} f>=fields{print str; str=""; f=0}' test
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11|12|13
1|2|3|4|5|6|7|8|9|10|11 |12|13
1|2|3|4|5|6|7|8|9|10| 11|12|13