假设我想搜索“123456789”,并且希望它靠近“名字”。有办法做到吗?
我有 0 逻辑来做这件事。也许管道 grep 可以工作?
哪种算法最适合此目的?
输入:
search_string1='firstname' search_string2='123456789'
proximity_#_of_lines=10
输出:
查找search_string1
并search_string2
举例说明它们是否有 10 条线彼此靠近。即,如果这两个字符串彼此相邻 10 行,则将其显示到文件中。
标准方法可能是:
第一个
grep
确保我们只查看匹配线$distance
周围的线$context
。然后第二个查看是否$what_we_want
在这些2*$distance+1
行中找到。如果您只想要匹配的行作为结果,请
-C "${distance}"
从第 2 个中删除grep
。假设每个字符串在输入中只能出现一次,然后使用任何 awk (未经测试):