Просто сохраните его в файл и удалите, если он не включает этот тег:
curl "http://example.com/$1" >"$1"
! grep -qF '<head>' "$1" && rm "$1"
Или, если хотите немного усложнить,
if curl "http://example.com/$1" | tee "$1" | ! grep -qF '<head>'
then
rm "$1"
fi
Или сначала выполните все извлечение, затем просмотрите полученные файлы и удалите их,
mkdir outdir # assuming this is not pre-existing
# iterates over all positional parameters
for path do
curl "http://example.com/$path" >outdir/"$path"
done
find outdir -type f ! -exec grep -qF '<head>' {} \; -delete
Но это будет работать, только если вы хотите получить, например. все известные файлы по фиксированному пути.
Начиная с этого CSV(input.csv
)
no,a,b
region1,-0.01703,0.08515
region2,0.02297,0.08515
вы можете преобразовать его в этот TSV(out.tsv
)
region1a -0.01703
region1b 0.08515
region2a 0.02297
region2b 0.08515
используя Миллера(https://github.com/johnkerl/miller)и работая
mlr --c2t reshape -i a,b -o item,value then put '$field=$no.$item' then cut -o -f field,value./input.csv | tail -n +2 >./out.tsv
Второй файл, который у вас есть, это(input.txt
)
p1 (region1a region1b -0.1);
p2 (region1a region1b 5);
p1 (region2a region2b -0.1);
p2 (region2a region2b 5);
Затем вы можете просто запустить цикл for в скрипте bash
#!/bin/bash
set -x
cp./input.txt./output.txt
while IFS=$'\t' read -r region value; do
sed -i -r 's/'"$region"'/'"$value"'/g'./output.txt
done <./out.tsv
output.txt
будет
p1 (-0.01703 0.08515 -0.1);
p2 (-0.01703 0.08515 5);
p1 (0.02297 0.08515 -0.1);
p2 (0.02297 0.08515 5);