您好,感谢您阅读我的帖子,我真的很感激。
需要一种方法来读取数组文件并以打印出如何找到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)。
无限地谢谢你。
答案 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 ""
}