Выбор строк с определенным значением в столбце

Вы столкнулись с проблемой параллельного добавления к файлу. Простой ответ: не надо.

Вот как это можно сделать с помощью 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 по умолчанию сериализует вывод, поэтому вы не получите вывод одного задания, смешанный с выводом другого.

1
19.07.2017, 18:49
1 ответ

легко с помощью команды awk

awk '{print > $1".txt"}' infile.txt

это создаст два файла «a.txt», содержащие те строки, в первом столбце которых будет только «a», и «b.txt», содержащие те строки, в первом столбце которых будет только «b», если ваш первый столбец содержит только a или b

вышеприведенное, когда ваши данные разделены вкладкой или пробелом , в случае, если они отличаются от этих, мы могли бы сказать ему awk с его -F"DELIMITER", который DELIMITER представляет ваш файл разделитель полей.

0
28.01.2020, 00:52

Теги

Похожие вопросы