Grep循环中数组的每个元素,并使用BASH写入newfile
我正在使用grep和for循环来尝试搜索文件4700921_combined_subs.txt中数组id的每个元素,然后将每一行写入一个名为搜索项的新文件。在正在搜索的文件中,每个搜索项都有多次出现 有人能帮我破译我的密码出了什么问题吗?它做我想要的一切,除了结果文件都是空的。有什么想法吗Grep循环中数组的每个元素,并使用BASH写入newfile,bash,for-loop,grep,Bash,For Loop,Grep,我正在使用grep和for循环来尝试搜索文件4700921_combined_subs.txt中数组id的每个元素,然后将每一行写入一个名为搜索项的新文件。在正在搜索的文件中,每个搜索项都有多次出现 有人能帮我破译我的密码出了什么问题吗?它做我想要的一切,除了结果文件都是空的。有什么想法吗 for i in "${ids[@]}" do grep '^$i' 4700921_combined_subs.txt > $i.txt do
for i in "${ids[@]}"
do
grep '^$i' 4700921_combined_subs.txt > $i.txt
done
非常感谢提前使用双引号,否则shell不会展开变量:
grep "$i" 4700921_combined_subs.txt > "$i.txt"
使用双引号,否则shell不会展开变量:
grep "$i" 4700921_combined_subs.txt > "$i.txt"
使用awk可以更有效地完成此任务。根据您获取$ID的方式,您可能可以简化此过程。只需要两个电话,一个给grep,一个给awk。如果我能想到的话,也许有办法避免打电话给grep
grep -f <( printf '%s\n' "${ids[@]}" ) 4700921_combined_subs.txt |
awk '{f=$1.txt; print >> f }'
使用awk可以更有效地完成此任务。根据您获取$ID的方式,您可能可以简化此过程。只需要两个电话,一个给grep,一个给awk。如果我能想到的话,也许有办法避免打电话给grep
grep -f <( printf '%s\n' "${ids[@]}" ) 4700921_combined_subs.txt |
awk '{f=$1.txt; print >> f }'
好极了,创造了奇迹。非常感谢-事情总是很简单。不客气。如果它为你服务,请考虑将它标记为接受,因此未来面对类似问题的用户将能够轻松地看到它。非常感谢-事情总是很简单。不客气。如果它为您服务,请考虑将其标记为已接受,因此将来面对类似问题的用户将能够轻松地看到它。