首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从包含没有特定删除器的地址的文件中查找重复地址

问从包含没有特定删除器的地址的文件中查找重复地址
EN

Unix & Linux用户
提问于 2017-12-23 08:30:46
回答 1查看 91关注 0票数 -1

使用Linux,

  1. 我想从包含地址(one address in one single line)但没有特定delimiter的文件中排序和识别重复地址。
  2. 重定向文件中每个重复地址的列表,文件名作为重复地址本身。

我尝试了所有使用grep -i "AX.*BY.*CZ"的地址criteria, sed, awk, agrep

但问题是,每次它只在文件中搜索字符串,而不是像AX and then BY and then CZ那样按顺序搜索字符串。这就是为什么输出中有很多异常现象。

请让我知道怎么做?

EN

回答 1

Unix & Linux用户

发布于 2017-12-23 10:45:50

查看您的address-list.csv文件,这似乎是倒垃圾,倒垃圾的一种情况。

我怀疑你能否用grep或sed做你想做的事。事实上,我怀疑是否有任何工具或脚本语言可以使用。

你也许可以用awk或perl或类似的语言做一些有用的事情,但是地址似乎没有一致的格式--大多数都有六位数的邮政编码,但并不是所有的行都有。许多人似乎把城市的名字和国家作为第二、最后和最后的字段。(“印度加尔各答”)但有些人跳过了国家,有些人在邮政编码前有城市名称,有些人在街道地址后面有城镇名称,有些人既没有城市也没有国家。有些在街道地址之前有个人/家庭/企业名称,有些在街道地址之后有,有些没有名字。

简而言之,如果没有大量的街道名称、城市/城镇/郊区名称、邮政编码、州名、etc....and,那么整个文件就无法自动处理,即使您有这样的列表,尝试将所有这些与每一行的子字符串匹配起来将非常复杂。

处理这一点需要智能(人或人工),而不是正则表达式或其他公式。

这就是试图处理自由格式的文本的问题,而这些文本甚至不假装有任何结构。有了文件中的一些奇怪之处,我想说这个.csv文件不仅仅是自由形式,而是“奇异形式”。

这就是为什么你从来不让用户在自由格式的文本字段中输入地址。你给他们一个标准的字段集,这些字段组成了一个地址名、街道号、街道名称、郊区、城市、邮政编码、国家等等。一些用户仍然会设法搞砸它,但你的绝大部分数据将被放在一个可用的form...and中,其余的数据要么可以手工修复,要么只是被丢弃。

IMO,您最好的选择是使用文本编辑器手动编辑它,使其成为一些标准化的形式,可以使用面向行的工具(如grep )轻松地处理。vi特别擅长这种重复的编辑任务--模式编辑器擅长于这样的任务,一个熟练的人可以在很小的一小部分时间内完成工作,而使用像nano这样的简单、无模式的编辑器所需的时间很小。

我建议如下:

代码语言:javascript
复制
name:street address:postal code:city:country:comments

注意:在:文件中没有多少.csv字符,可以用.字符删除或替换其中的字符。此外,country可能是可选的(它似乎是一个完整的印度地址列表),但拥有它并不有害-如果country字段为空,您的代码可能默认为"India“。

或者,您也可以尝试找到一个不是garbage...but的地址列表--我猜您正在尝试创建一个地址列表,因为这是您所拥有的全部。

票数 2
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/412640

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档