首先,我必须提到我的母语是法语,所以我可能会犯英语错误!
我尝试使用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,,,,
等...
我不确定这是不可能诚实的!
谢谢!
答案 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+$/