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

Awk 如果特定单词长度超过X个字符,则删除整行,行中的单词以逗号分隔,awk,sed,notepad++,Awk,Sed,Notepad++,我有一个超过1000000行的.sql文件。 我需要删除第三个“列”中包含X个以上字符的行(列之间用逗号分隔) 我试着使用一些VI、SED和AWK。 也有记事本++,但都没有成功 (255500, 0, '0093', 0.4350, 0.4350 ) - Keep this (255501, 0, '0035521160', 0.4350, 0.4350 ) < - Delete this (255500,0,'0093',0.4350,0.4350)-保留此 (255501,0,'0

我有一个超过1000000行的.sql文件。 我需要删除第三个“列”中包含X个以上字符的行(列之间用逗号分隔)

我试着使用一些VI、SED和AWK。 也有记事本++,但都没有成功

(255500, 0, '0093', 0.4350, 0.4350 ) - Keep this
(255501, 0, '0035521160', 0.4350, 0.4350 ) < - Delete this
(255500,0,'0093',0.4350,0.4350)-保留此
(255501,0,'0035521160',0.4350,0.4350)<-删除此项
第三列中由逗号分隔的单词包含少于8个字符,我想保留该行,超过8个字符的单词我需要删除整行


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

如果这不是您所需的全部,请编辑您的问题以澄清您的要求,并提供更具代表性的示例输入/输出:

$ awk -F, 'length($3)<8' file
(255500, 0, '0093', 0.4350, 0.4350 ) - Keep this

$awk-F,'length($3)如果这不是您所需要的全部,请编辑您的问题以澄清您的要求,并提供更具代表性的示例输入/输出:

$ awk -F, 'length($3)<8' file
(255500, 0, '0093', 0.4350, 0.4350 ) - Keep this

$awk-F,'length($3)如果您的数据在'd'文件中,请尝试gnu-sed:

sed -E '/^[^,]+,[^,]+,\s*[^,]{9,}/d' d

添加-i选项以真正编辑它
sed-Ei
..

如果您的数据在“d”文件中,请尝试gnu-sed:

sed -E '/^[^,]+,[^,]+,\s*[^,]{9,}/d' d
添加-i选项以真正编辑它
sed-Ei
..

尝试以下方法:

搜索:
^[^,]+,[^,]+,\s*'[^']{8,}.*\R?

替换为:
(无)

即使在列数据之间添加空格时,它也应该有效:

(255501, 0,          '12345678', 0.4350, 0.4350 )
您有一个演示

请尝试以下方法:

搜索:
^[^,]+,[^,]+,\s*'[^']{8,}.*\R?

替换为:
(无)

即使在列数据之间添加空格时,它也应该有效:

(255501, 0,          '12345678', 0.4350, 0.4350 )

你有一个演示

你的文件真的是这样的吗?请编辑您的问题,以显示您的文件看起来如何。如果您显示您迄今为止尝试过的代码(无论多么不充分),并描述您在使用该代码时遇到的问题,您将得到更友好的接待和更好的帮助。如果没有代码,你的问题看起来像是一个免费咨询的请求,很多人不喜欢。你提到@Raul Chiarella,你尝试了一些事情,我们总是鼓励人们在他们的帖子中发布他们的努力,所以请添加他们(以及回答用户在评论中提出的问题),然后让我们知道。
awk-F'[,]+''(长度($3)-2)这看起来像是SQL INSERT语句的一部分,因此对于那些询问“是的,这可能就是它的样子”的人来说。字符串将用单引号进行封装。Raul,这是否仅适用于以括号(或任何其他规则)开头的行?否则,您能将所有这些内容插入另一个表中,然后过滤掉吗?当然这会更合理。您的文件真的是这样吗?请编辑您的问题,以显示您的文件看起来如何。如果您显示您迄今为止尝试过的代码,您将得到更友好的接待和更好的帮助,尽管不充分,请描述您在这方面遇到的问题。没有代码,您的问题看起来像是免费咨询的请求,许多人不喜欢。您提到@Raul Chiarella,您尝试了一些事情,我们总是鼓励人们在他们的帖子中发布他们的努力,所以请添加他们(以及回答用户在评论中提出的问题)然后让我们知道。
awk-F'[,]+''(长度($3)-2)这看起来像是SQL INSERT语句的一部分,因此对于那些提问的人来说,“是的,这可能就是它的样子”.string将用单引号进行封装。Raul,这是否仅适用于以括号开头的行(或任何其他规则)?否则,您是否可以将所有这些内容插入另一个表中,然后过滤掉?这当然更合理。