如何在查找和替换中使用正则表达式

时间:2014-08-18 06:31:04

标签: regex csv dreamweaver

我有一个CSV文件,它有近50k的记录。我想从此文件中删除不必要的记录。任何人都可以告诉我如何通过查找和替换Regex实现这一目标?

数据如下所示:

Item Code,,Qty
CMAC-389109,,6
,Serial No.,
,954zg5,
,ffnaw8,
,gh8731,
,gxj419,
,hc6y9q,
,y65vh8,
CMAC-394140,,1
,Serial No.,
,4cu3z7,

我希望将此数据转换为以下格式:

ItemCode,Serial Number,Qty
CMAC-389109,"954zg5, ffnaw8, gh8731, gxj419, hc6y9q, y65vh8",6
CMBM-394140,"4cu3z7",1

1 个答案:

答案 0 :(得分:0)

这是一个捕获两个组(Item CodeShelf)的正则表达式:

^([^,]*?)(?:,(?:[^,]+)?){5},([^,]+),.*$

我不知道DW用来引用组的语法。但通常它是$n\n,所以在您的情况下,您可以将$1, $2放入"替换"搜索/替换框的字段。或\1, \2


如果您可以访问Linux环境(OS-X和Cygwin也可以使用),您可以使用命令行工具cutgrep来轻松完成此任务:

 cat <filename> | cut -d ',' -f 1,7 | grep -v "^,$" > <output_file>

我在cut上使用的参数是:

<强> -d     分隔符(字段分隔的字符)

<强> -f     字段(要包含在输出中的字段)。

...和grep

<强> -v     反转模式:仅包含与正则表达式匹配的输出 中的行。

根据您的问题中的数据,上述命令将产生以下结果:

Item Code,Shelf
CMAC-386607,M5-2
CMAC-389109, F2-3

这也应该非常有效,因为cut适用于流,并且只根据需要将尽可能多的数据加载到内存中。因此,在执行任务之前,您不需要加载整个文件。它是一个大文件,这可能很方便。