LINUX.ORG.RU

Сообщения alexross

 

Не работает переменная в GREP

Пробую использовать в grep переменную, но не получается, то ли синтаксис неправильный то ли вообще невозможно. Подскажите пожалуйста…

#вот так работает
grep -E ‘constanta(:|;)’ all_txt.txt > 1.txt

#а вот так нет
domains_var=‘constanta(:|;)’
grep -E $domains_var all_txt.txt > 1.txt

 

alexross
()

Как посчитать количество дублей в столбце не меняя порядка строк

Подскажите как посчитать количество одинаковых значений в столбце так, чтобы в итоге получился список строк в том же порядке и без удаленных дубликатов. sort file | uniq -c меняет порядок строк и удаляет дубликаты. попробовал пронумеровать строки cat или nl -ba file , чтобы потом можно было восстановить порядок, но все равно не понимаю как посчитать повторяющиеся строки без изменения первоначального порядка строк в столбце.

– Нужно из вот такого:
текст1
текст2

текст1

текст1
текст2
текст3

– Сделать вот такое
текст1;3
текст2;2
;2
текст1;3
;2
текст1;3
текст2;2
текст3;1

Пустые строки тоже нельзя удалять, их нужно тоже посчитать.

Был бы благодарен за помощь!!

 ,

alexross
()

Помогите обработать csv таблицу

Здравствуйте! Помогите, пожалуйста с сортировкой таблицы, никак не могу найти ответ. Нужно посчитать количество одинаковых вхождений для каждого из столбцов таблицы кроме 1,2,3 столбца и дописать это количество рядом со столбцом(справа создав новый) и после этого отсортировать по одному из столбцов в порядке убывания

я только смог через awk и sort вычленить один столбец и посчитать уникальные вхождения вот так:
cat file1.csv | awk -F «;» ‘{print $4} sort -n’ | sort | uniq -c > del1.tmp
sort -g -r del1.tmp > file2.csv
и ума не приложу как это сделать с таблицей целиком

Вот как выглядит таблица первоначально:

file1.csv
data;data;data;data-5;data-55;data-1;data-75;data-83;data-95;data-105;data-115
data;data;data;data-5;data-57;data-5;data-77;data-83;data-97;data-107;data-117
data;data;data;data-1;data-51;data-1;data-71;data-81;data-91;data-101;data-111
data;data;data;data-5;data-56;data-6;data-76;data-83;data-96;data-106;data-116
data;data;data;data-1;data-52;data-1;data-72;data-82;data-92;data-101;data-112
data;data;data;data-3;data-53;data-1;data-73;data-83;data-93;data-103;data-113
data;data;data;data-4;data-54;data-1;data-74;data-83;data-94;data-104;data-114
data;data;data;data-6;data-58;data-4;data-78;data-83;data-98;data-108;data-118
data;data;data;data-7;data-59;data-3;data-79;data-89;data-99;data-109;data-119

а вот что должно получиться: (видно, что в 4-м столбце data-1 и data-5 встречаются соответственно 2 и 3 раза, что и записано в 5-м столбце, а затем 5-й столбец отсортирован)

file2.csv
data;data;data;data-5;3;data-55;1;data-1;5;data-75;1;data-83;6;data-95;1;data-105;1;data-115;1
data;data;data;data-5;3;data-56;1;data-6;1;data-76;1;data-83;6;data-96;1;data-106;1;data-116;1
data;data;data;data-5;3;data-57;1;data-5;1;data-77;1;data-83;6;data-97;1;data-107;1;data-117;1
data;data;data;data-1;2;data-51;1;data-1;5;data-71;1;data-81;1;data-91;1;data-101;2;data-111;1
data;data;data;data-1;2;data-52;1;data-1;5;data-72;1;data-82;1;data-92;1;data-101;2;data-112;1
data;data;data;data-3;1;data-53;1;data-1;5;data-73;1;data-83;6;data-93;1;data-103;1;data-113;1
data;data;data;data-4;1;data-54;1;data-1;5;data-74;1;data-83;6;data-94;1;data-104;1;data-114;1
data;data;data;data-6;1;data-58;1;data-4;1;data-78;1;data-83;6;data-98;1;data-108;1;data-118;1
data;data;data;data-7;1;data-59;1;data-3;1;data-79;1;data-89;1;data-99;1;data-109;1;data-119;1

 ,

alexross
()

Как вычесть из одного списка другой

Подскажите пожалуйста - как вычесть из одного текстового списка другой на bash

Нашел вот такой вариант:

{ cat text1.txt | sort -u; cat text2.txt text2.txt; } | sort | uniq -u > resultat.txt

Но такое вычитание при работе со списками 5-10 млн строк отнимает по несколько часов. Есть ли более быстрые варианты сравнения списков.

Попробовал diff, но при выполнении «diff: memory exhausted» , вроде памяти не хватает…

попробовал comm -13 <(sort text1.txt) <(sort text2.txt) > resultat.txt

тоже очень медленный вариант, а больше ничего не нашел

 

alexross
()

lftp удаление файлов по маске не получается

Помогите пожалуйста, не могу удалить на удаленном ftp (каламбур) группу файлов. Один файл удаляется без проблем вот так:

lftp login:password@192.168.1.1/papka -e «rm file.txt; quit»

а как бы удалить группу? *.txt вот так не получается

lftp login:password@192.168.1.1/papka -e «rm *.txt; quit»

вроде как-то можно получить сначала список файлов, потом удалить, но не могу найти примеров.

 , ,

alexross
()

Парсинг имен доменов(и сабдоменов) из txt файла regex BASH

Пожалуйста помогите - как выбрать из текстового файла(file.txt) все домены. Как первого так и N-уровня Собрал вот такую строку:

grep -oP  "(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]" file.txt > domains.txt

Но есть домены, в которых используется нижнее подчеркивание «_» , и такие домены не попадают в выборку. Такие, например:

mail.mta-sts.mail.mail._mta-sts.mail.mail.mail.mail.mail.mail.humberside.bid

и их обрезает вот до такого состояния:

mta-sts.mail.mail.mail.mail.mail.mail.humberside.bid

Как изменить регулярку так, чтобы парсилось целиком домен с поддоменами, даже содержащими «_» ?

 , ,

alexross
()

RSS подписка на новые темы