我正在循环浏览文本文件中的各行。并在目录的每一行上执行grep。像下面一样
while IFS="" read -r p || [ -n "$p" ]
do
echo "This is the field: $p"
grep -ilr $p * >> Result.txt
done < fields.txt
但是上面的代码将结果写入文件的最后一行。而不是其他行。
如果我用其他行手动执行命令,则该命令有效(这意味着找到了匹配项)。我在这里想念的东西吗?谢谢
fields.txt看起来像这样
annual_of_measure__c
attached_lobs__c
apple
答案 0 :(得分:1)
文件fields.txt
然后,由read
命令读取并存储在变量$p
中的行位于第一行annual_of_measure__c\r
中(请注意,附加了\r
用于回车) 。然后grep将找不到匹配项。
从您对问题的描述和注释中的确认来看,fields.txt
的最后一行似乎根本没有行尾,因此变量$p
是普通字符串{{1} }和grep可以在文件的最后一行找到匹配项。
有些工具可以转换行距,例如参见this answer或even more options in this answer。