Вы столкнулись с проблемой параллельного добавления к файлу. Простой ответ: не надо.
Вот как это можно сделать с помощью GNU Parallel:
doit() {
url="$1"
uri="$2"
urlstatus=$(curl -o /dev/null --insecure --silent --head --write-out '%{http_code}' "${url}""${uri}" --max-time 5 ) &&
echo "$url $urlstatus $uri"
}
export -f doit
parallel -j200 doit :::: url uri >> urlstatus.txt
GNU Parallel по умолчанию сериализует вывод, поэтому вы не получите вывод одного задания, смешанный с выводом другого.
легко с помощью команды awk
awk '{print > $1".txt"}' infile.txt
это создаст два файла «a.txt», содержащие те строки, в первом столбце которых будет только «a», и «b.txt», содержащие те строки, в первом столбце которых будет только «b», если ваш первый столбец содержит только a или b
вышеприведенное, когда ваши данные разделены вкладкой или пробелом , в случае, если они отличаются от этих, мы могли бы сказать ему awk с его -F"DELIMITER"
, который DELIMITER представляет ваш файл разделитель полей.