首页 > 解决方案 > BASH:使用 grep 循环遍历 CSV 和 cURL 行

问题描述

我的目标是在 bash 中循环一个 CSV 文件,我有一些半工作的代码。它似乎没有完成 cURL,因为命令会立即完成并添加到失败文件中。它正在读取 URL 的单列 CSV。

我研究过但没有成功,查看 GREP 成功代码等。这只是在 MACOS 上本地运行。

INPUT=test.csv
OLDIFS=$IFS
IFS=,
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; }
while read col1
do
    if curl -L -s "$col1" | grep -q "string"; then
        echo "${col1}" >> one.txt
    else
        echo "${col1}" >> two.txt
    fi
done < $INPUT
IFS=$OLDIFS

我还在 IF 线上尝试了以下操作: if [[ $(curl -L -s "$col1" | grep -q "string") ]]; then

谢谢

标签: bashmacoscurlgrep

解决方案


来自bash 手册

从标准输入中读取一行,或者从作为参数提供给 -u 选项的文件描述符 fd 中读取一行,并将第一个单词分配给第一个名称,第二个单词分配给第二个名称,依此类推,剩下的分配给姓氏的单词及其中间分隔符

因为您只提供一个名称,所以 col1 不是第一列,而是整行。

尝试 while read col1 leftover使用@gboffi 的评论建议


推荐阅读