Kar*_*hik 3 shell grep scripting text-processing sort
我在一个文件中有一组数据。
psf7433-nlhrms
unit7433-nobody
unit7333-opera
bpx7333-operations
app7333-osm
unit7330-partners
psf7331-pdesmond
unit7333-projm
mnp7330-redirect
unit7333-retailbanking
cpq7333-rkarmer
unit6333-sales
ring7323-support
unit7133-telco
post7323-uadb
sun7335-ukhrms
burp7133-wfnmreply
Run Code Online (Sandbox Code Playgroud)
如何忽略每行的起始字母字符和数字后面的字符并获取唯一数字的计数。(或)如何仅检索每行中的数值并获取其唯一计数。
考虑到我们设法只提取数值,我们会得到这个。
7433
7433
7333
7333
7333
7330
7331
7333
7330
7333
7333
6333
7323
7133
7323
7335
7133
Run Code Online (Sandbox Code Playgroud)
现在,我想要检索到的数值的唯一计数。所以忽略重复,我应该得到以下最终输出。
8
Run Code Online (Sandbox Code Playgroud)
我无法通过使用awk或sed甚至简单的grep来做到这一点| 切
我不想要提取值的列表,我只想要最终计数作为答案。
帮我!
使用grep,只过滤掉数字:
grep -Eo '[0-9]+-' file | sort -u | wc -l
Run Code Online (Sandbox Code Playgroud)
[0-9] 匹配 0 到 9 之间的任何字符(任何数字)。+在扩展的正则表达式中至少代表一个字符(这就是该-E选项与 一起使用的原因grep)。所以[0-9]+-匹配一位或多位数字,后跟-.-o只打印与您的模式匹配的部分,因此给定 input abcd23-gf56,grep只会打印23-.sort -u排序和过滤唯一条目(由于-u),并wc -l计算输入中的行数(因此,唯一条目的数量)。