arrays - 准确的 AWK 数组搜索
问题描述
任何人都可以提供一些帮助让这个 AWK 正确搜索吗?
我需要在“sample.txt”文件中搜索“combinations”文件中的所有 6 个数组元素。但是,我需要从每个字符进行搜索,而不是像普通的文本编辑器搜索框类型搜索那样,在每次出现后按块搜索。我需要以最紧凑的方式进行搜索,以便每次发生时都能准确显示。例如,我需要在字符串“AAAAA”中找到组合“AAA”发生 3 次而不是 1 次的搜索类型。请参阅我之前的帖子:BASH:搜索字符串并准确显示子字符串在其中发生的确切次数
sample.txt 文件是:
AAAAAHHHAAHH
组合文件是:
AA
HH
AAA
HHH
AAH
HHA
如何获取脚本
#!/bin/bash
awk 'NR==FNR {data=$0; next} {printf "%s %d \n",$1,gsub($1,$1,data)}' 'sample.txt' combinations > searchoutput
输出所需的输出:
AA 5
HH 3
AAA 3
HHH 1
AAH 2
HHA 1
而不是它当前输出的内容:
AA 3
HH 2
AAA 1
HHH 1
AAH 2
HHA 1
?
正如我们所见,脚本只是像文本编辑器一样查找组合。我需要它从每个字符的开头搜索组合,以便发生所需的输出。
如何让 AWK 输出所需的输出?不能感谢你。
解决方案
你可以试试这个:
$ awk '{x="AAAAAHHHAAHH"; n=0}{
while(t=index(x,$0)){n++; x=substr(x,t+1) }
print $0,n
}' combinations.txt
AA 5
HH 3
AAA 3
HHH 1
AAH 2
HHA 1
推荐阅读
- python - 动手机器学习代码不适用于 Jupyter,但适用于 Google。为什么?
- javascript - 在 R Shiny 中观察另一个事件时控制嵌入的 YouTube 视频
- asp.net-web-api - 在请求正文中传递 Odata 查询选项
- php - 学说锁表
- javascript - 定义元素之前的控制台输出错误Javascript
- face-recognition - 使用 TFLITE 量化 MobileFaceNet 失败
- r - 我可以像使用 ffmpeg 一样使用 R 来修剪视频吗?
- database - 如何使用 GraphQL 只返回我需要的数据?
- vb.net - 使用组合框的集合来更改 Enabled 属性
- javascript - Litelement 将对象作为 html 属性传递