首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用shell脚本在文件中查找/获取编号

问如何使用shell脚本在文件中查找/获取编号
EN

Stack Overflow用户
提问于 2013-06-07 12:07:55
回答 2查看 3.6K关注 0票数 1

据我所知,我是Linux Shell脚本的新手,在文件中查找数字可以用grep来完成

代码语言:javascript
复制
egrep -o "[0-9][0-9]*" my_file

但是我如何获得这些字符串的第一位数并将其作为统计数据呢?例如1234,123,1267,所以我每3次得到1次

我知道使用

代码语言:javascript
复制
A=$(tr -cd 1 < page.html|wc -c)

我可以在一个文件中获得数字"1“计数,但这不是我想要的....我要数第一个数字"1"......这就是为什么这对我来说很难。

请帮帮忙......非常感谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-06-07 12:24:22

代码语言:javascript
复制
A=$(egrep -o '[0-9]+' my_file | egrep -c '^1')

第一个egrep查找所有数字并输出它们。第二个egrep使用-c选项输出匹配计数,并且regexp匹配以1开头的行。

票数 3
EN

Stack Overflow用户

发布于 2013-06-07 14:07:34

从问题看,文件似乎包含所有类型的字符,并且您希望隔离文件中所有数字的第一个数字。它看起来也不需要是一行的第一个单词(例如在前面没有任何空格)。牢记这两个假设,您可以执行以下操作:

代码语言:javascript
复制
grep '[0-9]' test.html| sed 's/\([0-9]\+\)/\n\1\n/g' |grep '^[0-9]' |cut -c1 |sort |uniq -c

举个例子:

代码语言:javascript
复制
curl -N -s 'http://stackoverflow.com/users/1353267/samveen' |grep '[0-9]' |sed 's/\([0-9]\+\)/\n\1\n/g' |cut -c1 |grep '^[0-9]' |sort |uniq -c

重要:在上面的示例页面中,有一行{"fkey":"8f1a9c6e21503516793b853265ec4939","isRegistered":true,"userId":1353267,"accountId":1430801,"gravatar":"<div class=\"\">,划分如下:

代码语言:javascript
复制
{"fkey":"
8
f
1
a
9
c
6
e
21503516793
b
853265
ec
4939
","isRegistered":true,"userId":
1353267
,"accountId":
1430801
,"gravatar":"<div class=\"\">

如果您不想要此行为,sed模式将更改为

sed 's/\b\([0-9]\+\)\b/\n\1\n/g',这意味着它现在搜索独立的数字(\b是单词边框),并且sed命令的输出现在是:

代码语言:javascript
复制
{"fkey":"8f1a9c6e21503516793b853265ec4939","isRegistered":true,"userId":
1353267
,"accountId":
1430801
,"gravatar":"<div class=\"\">

此外,如果巧妙地选择了sed转换,则不需要cut命令。也就是说,如果

将模式的\([0-9]\+\)部分更改为\([0-9]\)[0-9]*,那么sed将只显示每个数字的第一个数字,而不是整个数字。因此,不再需要cut -c1。使用

sed 's/\b\([0-9]\)[0-9]*\b/\n\1\n/g',我们得到:

代码语言:javascript
复制
{"fkey":"8f1a9c6e21503516793b853265ec4939","isRegistered":true,"userId":
1
,"accountId":
1
,"gravatar":"<div class=\"\">

因此,不需要cut。

给出关于输入文件的更多信息,该命令可以进一步优化。

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

https://stackoverflow.com/questions/16976072

复制
相关文章

相似问题

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