我有一个超过1000000行的.sql文件。 我需要删除第三个“列”上包含超过X个字符的行(各列用逗号分隔)
我尝试使用一些VI,SED和AWK。 也是Notepad ++,但没有成功
(255500, 0, '0093', 0.4350, 0.4350 ) - Keep this
(255501, 0, '0035521160', 0.4350, 0.4350 ) < - Delete this
第三列上用逗号分隔的单词,我想保留少于8个字符,长于8个的单词我需要删除整行。
我尝试手动删除,但行太多
答案 0 :(得分:2)
如果这还不是您所需要的,那么请编辑您的问题以阐明您的要求并提供更真实的示例输入/输出:
$ awk -F, 'length($3)<8' file
(255500, 0, '0093', 0.4350, 0.4350 ) - Keep this
答案 1 :(得分:0)
如果您的数据位于“ d”文件中,请尝试使用gnu sed:
sed -E '/^[^,]+,[^,]+,\s*[^,]{9,}/d' d
添加-i选项以真正对其进行编辑; sed -Ei
...
答案 2 :(得分:0)
尝试一下:
搜索:^[^,]+,[^,]+,\s*'[^']{8,}'.*\R?
替换为:(nothing)
即使在列数据之间添加空格,它也应该起作用:
(255501, 0, '12345678', 0.4350, 0.4350 )
您有一个演示here