循环csv中的两列,在bash中使用bulk-bing-image-downloader抓取图像 &



我正在尝试使用bulk-bing-image-downloader抓取bing图像。我有一个csv文件,其中包含我想要保存的图像的关键字和文件夹名称:

keyword,folder,search
dog's house,animal,1
book.end,read,0
key chains,house,1

我想使用keywordfolder下的值作为搜索和下载图像的参数,search下的值作为条件语句,如果它是1,则代码执行搜索,但如果它是0则不执行搜索。基本的bulk-bing-image-downloader代码是:

./bbid.py -s "keyword" --limit 10 --adult-filter-off -o "folder"

其中keywordfolder是我想通过csv文件中的每一行循环的地方。我目前有bash命令设置为,但我是shell命令的新手,对awk是如何工作的没有任何概念……请帮忙?:

awk '
BEGIN {
-F,
FPAT = "([^,]+)|("[^"]+")"
}
{
if ($1 != "keyword") {
printf("%sn", $1)
./bbid.py -s $1 --limit 10 --adult-filter-off -o $1
}
}
' test.csv

既然你提到你不知道awk是如何工作的,那就去读阿诺德·罗宾斯的《有效的awk编程》第五版,它会教你如何使用awk。对于您所发布的命令,您需要理解的最重要的事情是:awk不是shell. Awk和shell是两种完全不同的工具,有着完全不同的用途和各自的语法、语义和作用域。Awk是一个用于操作文本的工具,而shell是一个用于创建/销毁文件和进程以及对工具调用排序的工具。Awk是shell的发明者也为shell发明了一个工具,以便shell在需要时调用它来操作文本。

这个shell脚本可能就是你想要做的:

while IFS=',' read -r k f _; do
echo ./bbid.py -s "$k" --limit 10 --adult-filter-off -o "$f"
done < <(tail -n +2 file)
./bbid.py -s dog's house --limit 10 --adult-filter-off -o animal
./bbid.py -s book.end --limit 10 --adult-filter-off -o read
./bbid.py -s key chains --limit 10 --adult-filter-off -o house

当你完成初始测试时,移除echo

相关内容

  • 没有找到相关文章

最新更新