我正在尝试使用bulk-bing-image-downloader抓取bing图像。我有一个csv文件,其中包含我想要保存的图像的关键字和文件夹名称:
keyword,folder,search
dog's house,animal,1
book.end,read,0
key chains,house,1
我想使用keyword
和folder
下的值作为搜索和下载图像的参数,search
下的值作为条件语句,如果它是1,则代码执行搜索,但如果它是0则不执行搜索。基本的bulk-bing-image-downloader代码是:
./bbid.py -s "keyword" --limit 10 --adult-filter-off -o "folder"
其中keyword
和folder
是我想通过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
。