显示如何在数据文件中找到数组元素?

时间:2018-05-02 17:17:00

标签: bash awk

您好,感谢您阅读我的帖子,我真的很感激。

需要一种方法来读取数组文件并以打印出如何找到arrayfile元素的方式搜索数据文件。一个awk one衬垫是首选。

arrayfile:

haha
hahh

数据文件:

aaahahahaaaahahahhaaahahahaaahahaaaa

desiredoutputfile:

haha 1110111
hahh 0001000

所以它基本上从arrayfile元素中删除了最后一个字符,搜索数据文件直到找到匹配,如果匹配后的下一个字符与删除后相同,则写入1,如果没有,则写入0,It还需要以尽可能最紧凑的方式进行搜索(从数据文件中每个字符的开头,而不是像文本编辑器中的常规搜索一样,如我在上一篇文章中所描述的那样:BASH: Search a string and exactly display the exact number of times a substring happens inside it)。

无限地谢谢你。

1 个答案:

答案 0 :(得分:0)

终于下来了! WOOT!

{ 
  # remove spaces
  gsub(/[ ]+/, "", $0)
} 

NR==FNR {
  data=$0;
  data_len = length(data)
  next
} 

{
  pattern = $0
  pattern_len = length(pattern)
  printf("%s\t", pattern)
  for (j=1; j+pattern_len-1 <= data_len; j++) {
    if (substr(data, j, pattern_len-1) ~ substr(pattern, 1, pattern_len-1)) {
      if (substr(data, j + pattern_len - 1, 1) ~ substr(pattern, pattern_len, 1)) {
        result = 1
      }
      else {
        result = 0 
      }
      printf("%s", result) 
    }      
  }
  print ""
}