循环遍历 csv 中的两列以使用 bash 中的 bulk-bing-image-downloader 抓取图像
Loop through two columns in csv to scrape images using bulk-bing-image-downloader in bash
我正在尝试使用 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 ( != "keyword") {
printf("%s\n", )
./bbid.py -s --limit 10 --adult-filter-off -o
}
}
' test.csv
既然您提到您对 awk 的工作原理一无所知 - 请获取 Arnold Robbins 撰写的“Effective AWK Programming”第 5 版一书,它将教您如何使用 AWK。不过,根据您发布的命令,您需要理解的最重要的事情是:awk 不是 shell。 awk 和 shell 是两种完全不同的工具,具有完全不同的用途和它们自己的语法、语义和范围。 Awk 是一个用于处理文本的工具,而 shell 是一个用于 creating/destroying 文件和进程以及对工具调用排序的工具。 awk 是发明 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
。
我正在尝试使用 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 ( != "keyword") {
printf("%s\n", )
./bbid.py -s --limit 10 --adult-filter-off -o
}
}
' test.csv
既然您提到您对 awk 的工作原理一无所知 - 请获取 Arnold Robbins 撰写的“Effective AWK Programming”第 5 版一书,它将教您如何使用 AWK。不过,根据您发布的命令,您需要理解的最重要的事情是:awk 不是 shell。 awk 和 shell 是两种完全不同的工具,具有完全不同的用途和它们自己的语法、语义和范围。 Awk 是一个用于处理文本的工具,而 shell 是一个用于 creating/destroying 文件和进程以及对工具调用排序的工具。 awk 是发明 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
。