Regexp用于捕获第一个和第二个逗号之间的字符串,其中包含数字的字母字符

时间:2015-10-30 15:08:10

标签: regex csv sed

首先,我必须提到我的母语是法语,所以我可能会犯英语错误!

我尝试使用sed捕获并删除CSV文件中第二项包含其他字符然后是数字的行。

以下是OK行的示例:

book/show

必须删除的行:

2323421,9781550431209,,2012-07-24 13:30:57,False,2012-07-01 00:00:00,False,118,,1,246501

1901461,3002CAN,,2010-09-29 13:46:59,True,,True,,,,

等...

我不确定这是不可能诚实的!

谢谢!

3 个答案:

答案 0 :(得分:0)

使用awk你可以这样做:

awk -F, '$2 ~ /^[[:digit:]]+$/' file

或(感谢@ghoti):

awk -F, '$2 !~ /[^[:digit:]]/' file

仅获取第二列为整数的行。

或者使用sed即可:

sed -i.bak '/^[^,]*,[[:digit:]]*[^,[:digit:]]/d' file

答案 1 :(得分:0)

这是使用sed

sed -e '/^[^,]*,[^,]*[^0-9,]/d'

模式细分:

^行首

[^,]*,所有内容都包含第一个逗号

[^,]*所有不是逗号的内容

[^0-9,]至少有一个不是数字或逗号的字符

答案 2 :(得分:0)

的Perl:

perl -F, -lane 'print if $F[1] =~ /^\d+$/' file

-a autosplit line to array @F,字段以0开头 -F,使用逗号分割行 仅当字段1仅包含数字时才打印该行:/^\d+$/