我有一个大的ASCII文件。每行包含一个字段,如:
"id":"N119PM-1442267121-144-0"
双引号实际上在文件中,而不是我的添加。这些字段以逗号分隔,但它们不一定在行与行之间以相同的顺序出现,这意味着使用cut不是一个可行的选项。
我一直在使用:
grep -o '"id":"[A-Aa-z0-9-]\+' <filename>
它适用于上面显示的字段类型。但有个问题。大量这些字段看起来像
"id":"JBU19-1442091600-schedule-0000:4"
换句话说,他们最后有一个额外的冒号和数字。我无法选择包含这些额外字符的字段。
我试过了:
grep -o '"id":"[A-Aa-z0-9:-]\+' <filename>
grep -o '"id":"[A-Aa-z0-9\:-]\+' <filename>
grep -o '"id":"[A-Aa-z0-9-]\+\(:[0-9]\+\)' <filename>
没有成功。任何帮助,将不胜感激。
编辑:我也尝试过将:更改为%然后再搜索%,但这也不起作用。
答案 0 :(得分:0)
如果您使用的是GNU GREP
,则可以在grep命令
-P
grep -oP '"id":"[A-Za-z0-9-:]+"' <filename>
"id":"N119PM-1442267121-144-0"
"id":"JBU19-1442091600-schedule-0000:4"
-P, - perl-regexp PATTERN是一个Perl正则表达式