如何从列表中grep匹配内容并为每个搜索生成单独文件?
解决方案
直接修改循环命令,将每个目标值的匹配结果重定向到单独文件即可,命令如下:
while read -r i; do grep -F "$i" *.annotations > "${i}_matches.txt" done < lists_values
细节说明:
read -r:避免把目标值里的反斜杠当成转义字符,保证读取的内容完全准确grep -F:把目标值当作固定字符串匹配,避免目标值含正则特殊字符时出现意外匹配(如果确定目标值没有特殊字符,可省略该参数)"$i":给变量加双引号,防止目标值包含空格、特殊符号时触发命令错误> "${i}_matches.txt":将匹配结果写入以目标值命名的文件,文件名可按需调整,比如改成"${i}.result"
如果需要往已有文件追加结果而非覆盖,把>换成>>即可。
内容的提问来源于stack exchange,提问作者CARLOS LARA
相关产品推荐
相关产品推荐

