1

抱歉,如果在其他地方回答了这个问题——我做了一些搜索,但找不到答案。

假设我有一个包含一堆内容的文本文件。在该内容中是一个职业代码,它始终采用数字后跟大写字母的格式。

如何仅从文件中提取 occ 代码?用简单的英语,我想删除文件中与 number-capital_letter 模式不匹配的所有内容。

4

3 回答 3

5

你可以匹配使用/(\d+[A-Z])/

于 2010-07-27T21:56:20.343 回答
0

根据文件中 occ 代码的显示方式,编写一个逐行或逐字扫描的脚本,并可能使用 REGEX 检查匹配项,然后将它们写入另一个文件是一个简单的解决方案。

您可以在整个文档上使用单个正则表达式匹配并迭代结果,但这可能会根据文件的大小造成问题。

于 2010-07-27T22:01:37.897 回答
0

这是使用 sed 删除除所需代码之外的所有内容的粗略尝试。(请注意,我将“数字”解释为一个或多个数字的字符串,没有小数点或前导减号。)

sed -e 's/\([A-Z]\)[0-9]*/\1/g' -e 's/[0-9]*[^0-9A-Z]*//g' -e 's/[0-9]*$//' -e '/^$/d' < filename

第一个命令删除一个不是数字的大写字母之后的任何内容(因此可能是另一个代码的开头),第二个删除任何数字后跟大写字母以外的其他内容,第三个删除尾随数字,第四个删除空白线。

我已经进行了一些测试,这似乎工作得很好。如果有人能找到失败的案例,我会很乐意修改它。

于 2010-07-27T23:36:34.017 回答