Как получить общее количество строк и уникальные подсчеты на одной строке

Один из аспектов вашей проблемы заключается в том, что вы должны использовать кавычки, чтобы избежать проблем с такими командами оболочки, как &. Но это не единственная проблема. Многие веб-сайты отказываются обслуживать вас, если вы используете бота или программу вроде wget. Поэтому вам нужно сменить пользовательский агент.

Перейдите по адресу:

http://www.whatsmyua.com/

Этот веб-сайт показывает вам пользовательский агент вашего браузера. Затем запустите:

wget -U "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405" 'https://translate.google.hu/?hl=hu&tab=wT#en/hu/Enthusiast' -O Enthusiast.html

Более разумный выбор - использовать Google Chrome. Откройте Chrome, нажмите F12, перейдите на https://translate.google.com/ . Затем щелкните правой кнопкой мыши первый запрос, то есть translate.google.com, и выберите «Копировать как cURL». Затем вы можете использовать команду для запроса страницы (почти), как если бы вы использовали Google Chrome. Вы можете использовать «-o» в cURL, чтобы сохранить его как файл, или вы можете преобразовать команду в те, которые можно использовать в wget.

Copy as cURL in Chrome

Эта функция Chrome описана здесь:

http://www.lornajane.net/posts/2013/chrome-feature-copy-as-curl

Обратите внимание, что иногда, когда вы получаете сообщение «Запрещено» сообщение, вам нужно подождать некоторое время или перейти на веб-сайт с помощью браузера и ответить на такой вопрос, как Captcha, чтобы продолжить свой запрос на веб-сайт.

И, наконец, вы должны проверить «условия обслуживания», прежде чем использовать его определенным образом. Не знаю, правильно ли вы поступаете, поэтому проверьте сами.

2
25.08.2016, 00:54
2 ответа

Если вы используете GNU awk

awk -F, '{a[$1]++; b[$1][$2]}; 
    END{for (k in a) printf "%s,%d,%d\n", k, a[k], length(b[k])}' test.csv
1
27.01.2020, 21:56

Наивное решение - просто подсчитать каждое происшествие и отслеживать, чтобы увидеть если мы видели это раньше.

Итак:

awk -F, '{ t[$1]++; seen[$0]++; if (seen[$0] == 1) { u[$1]++ } }
         END { for (a in t) { print a "," t[a] "," u[a] } }'

Первая строка будет отслеживать общее количество раз, когда дата встречалась в t . Он будет отслеживать, сколько раз мы видели каждую строку в , увиденную , и если мы впервые видим ее, то мы знаем, что она уникальна, и подсчитываем ее в u .

Вторая строка будет перебирать результаты и распечатывать их.

4
27.01.2020, 21:56

Теги

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