从文件中删除垃圾

时间:2010-11-08 07:01:55

标签: sed grep

我有一个csv文件,在文件的开头有一些垃圾。我该如何摆脱它?

sh-3.2# more data_combined.csv
84252,1,A ROSEAL

文件应以数字842 ...

开头

1 个答案:

答案 0 :(得分:1)

对于显示的数据,这应该可以解决问题(假设是单字节代码集,例如ISO 8859-1,而不是UTF-8):

sed '1s/^...//' data_combined.csv

如果是UTF-8,则开始时有6个字节的垃圾。如果使用UTF-8语言环境运行sed,则“.”元字符匹配UTF-8字符(在所示的情况下每个字符2个字节),因此相同的表达式可以正常工作。如果使用SBCS(单字节代码集)(例如8859-1)运行sed,那么您需要使用如下模式:

sed '1s/^.\{6\}//' data_combined.csv

实际上,它会使用尽可能多的字符来写6个点;但这种概括可能更清楚。


正如Dennis Williamson在我睡觉时所说的那么短暂的间隔中正确地说,要从第一行的开头删除非数字,请使用:

sed '1s/^[^0-9]*//' data_combined.csv