如果特定单词的长度超过X个字符,则删除整行,该行中的单词以逗号分隔

时间:2019-04-15 17:05:01

标签: awk sed notepad++

我有一个超过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个的单词我需要删除整行。

我尝试手动删除,但行太多

3 个答案:

答案 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