2016-07-27 9 views
-1

52,000行の.CSVファイルがあります。各行には区切り文字 '|'で区切られた13個の列があります。 11行目に不正なデータが挿入されているため、ファイル内に新しい改行文字が挿入されています。私はそれらを削除するはずです。50,000行以上の.CSVファイルで改行文字を削除する必要があります。 linuxコマンドが必要です。

+1

こんにちはKiranさん、歓迎されるStackoverflow!もっと情報をお願いします。これまでに何を試みましたか?良い質問をするには良い方法です:http://stackoverflow.com/help/how-to-ask – Jurik

+0

Linuxでは、ファイルのすべての行に最後に改行文字があります。あなたは、削除したい改行をより具体的にすることができますか? –

答えて

1

これを試すことができます。

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


[email protected]:/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 


[email protected]:/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 
+0

その文字列に改行文字はありません。 'echo -e'で試してみてください。 – Kusalananda

関連する問題