【发布时间】:2019-04-17 02:02:23
【问题描述】:
我有一个超过 1000000 行的 .sql 文件。 我需要删除第三个“列”上包含超过 X 个字符的行(列以逗号分隔)
我尝试使用一些 VI、SED 和 AWK。 还有记事本++,但没有成功
(255500, 0, '0093', 0.4350, 0.4350 ) - Keep this
(255501, 0, '0035521160', 0.4350, 0.4350 ) < - Delete this
以逗号分隔的第三列中包含少于 8 个字符的单词我想保留该行,超过 8 个的单词我需要删除整行。
我尝试手动删除,但行数太多
【问题讨论】:
-
你的文件真的是这样吗?请编辑您的问题以显示您的文件的外观
-
如果您展示到目前为止您尝试过的代码(无论多么不足),并描述您遇到的问题,您将在这里得到更友好的接待和更好的帮助。如果没有代码,您的问题看起来像是请求免费咨询,很多人不喜欢这样。
-
您提到@Raul Chiarella 您尝试了一些事情,我们总是鼓励人们在他们的帖子中发布他们的努力,所以请添加他们(以及回答用户在 cmets 中提出的问题)并让我们那就知道了。
-
awk -F'[ ,]+' '(length($3)-2)<8' filename可能是您正在寻找的。但是您的输入文件实际上似乎并不遵循某种模式。例如,左括号和第一个字段之间没有分隔符,但在最后一个字段和右括号之间有一个分隔符。 -
这看起来像是 SQL INSERT 语句的一部分,所以对于那些询问“是的,这可能就是它的样子”的人来说。字符串将用单引号封装。劳尔,这应该只适用于以括号(或任何其他规则)开头的行吗?否则,您能否将所有这些插入到另一个表中,然后过滤掉?当然这样会更合理。