Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 26.01.2023
Сообщений: 1

Поиск обрезанных строк в текстовых файлах csv

26.01.2023, 14:56. Показов 601. Ответов 5
Метки grep (Все метки)

Студворк — интернет-сервис помощи студентам
На сервере(linux ssh) есть много файлов csv - разделитель полей ";", а разделитель строк символ переноса строки.
По каким то причинам приложение, которое их пишет иногда ошибается, и вместо полной строки выгружает часть:

--нормальная строка
"F7B0222225C31EDDA5C7D34A9F8C96CD";20220 1;96;01;2022;-108781050;181403105981307;1106;1;890201; 893708;0058048651;001;018;2022-01-05 22:37:00;2022-01-06 06:50:00;001223182260;00002;0058048651;0 01;018;2022-01-05 22:37:00;2022-01-06 06:50:00;890201;893708;0;2023-01-17 12:47:12


--обрезанная строка
"F7B0222225C31EDDA5C7D334038816CD";20220 1;96;01;2022;-109155744;927105486910000;2028;1;904565; 904601;0057747834;004;006;2021-12-30 00:22:00;2


мне нужна команда(вероятно grep), которая вернет таблицу:
имя файла|номер строки, где количество разделителей полей меньше заданного.



С уважением,
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
26.01.2023, 14:56
Ответы с готовыми решениями:

Поиск нужных строк в HTML-файлах по заданному ключу и запись определённых слов из найденных строк в CSV-файл
Есть 100 файлов в папке BDVK с форматом .html Нужно сделать программу которая ищет в html файле по строкам - ключевым словам и сохраняет...

Поиск в текстовых файлах символьных групп по шаблону и последующий поиск найденных в именах файлов (с логом)
Господа программисты! Прошу помочь в таком вопросе! Исходные данные: Последовательности такого вида: где ???? - это...

Дописи строк в текстовых файлах
Можете отредактировать программу, чтоб она после запуска сразу закрывалась, и писала строки после полследней, а не сразу за последним...

5
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
26.01.2023, 15:12
Code
1
grep -E '^([^;]*;){26}[^;]*$'
Добавлено через 1 минуту
Цитата Сообщение от babken Посмотреть сообщение
где количество разделителей полей меньше заданного.
Екскьюз ми
Code
1
grep -vE '^([^;]*;){26}[^;]*$'
Code
1
grep -E '^([^;]*;){,25}[^;]*$'
0
 Аватар для volodin661
6795 / 2292 / 348
Регистрация: 10.12.2013
Сообщений: 7,917
27.01.2023, 19:24
Bash
1
2
3
4
5
6
7
8
9
10
11
perl -nE '
$c=y/;//;
$max=$c if$max<$c;
push@a,$c if$c;
if(eof&&$max) {
 for($L=0;$L<@a;++$L) {
    printf("$ARGV(%d) обрезана до %d полей\n",$L+1,$a[$L]) if $a[$L]<$max
 };
 @a=(),$max=0
}
' *.csv
output:
a.csv(4) обрезана до 15 полей
a.csv(7) обрезана до 15 полей
b.csv(1) обрезана до 19 полей
b.csv(2) обрезана до 15 полей


PS:
  1. макс. количество полей задавать не требуется, считается само
  2. пустых строк в CSV быть не должно
0
Эксперт NIX
 Аватар для nezabudka
3334 / 752 / 252
Регистрация: 28.06.2015
Сообщений: 1,552
Записей в блоге: 16
27.01.2023, 21:42
Увидела свое упущение - имя файла и номер строки:
Code
1
grep -nHE '^([^;]*;){,25}[^;]*$'
Рекурсивный поиск:
Code
1
grep --include=\*.csv -rnHE '^([^;]*;){1,25}[^;]*$' ./ | cut -d: -f1,2
0
Покинул форум
3701 / 1484 / 355
Регистрация: 07.05.2015
Сообщений: 2,903
28.01.2023, 21:15
volodin661, признаться ожидал от тебя нечто вроде:
Bash
1
find . -type f -name '*.csv' -exec perl -ne '$_=tr/;//+1;printf "$ARGV($.): обрезана до $_\n" if $_ < 26' {} \;
Можно было бы то же сделать с помощью awk:
Bash
1
find . -type f -name '*.csv' -exec awk 'BEGIN{FS=";"}{if (NF < 27) print FILENAME,NR,"обрезана до",NF}' {} \;
Или pwsh:
PowerShell
1
(sls ';' *.csv -all).where{$_.matches.count -lt 26} | select filename, linenumber, @{n='Cut';e={$_.matches.count+1}}
0
 Аватар для volodin661
6795 / 2292 / 348
Регистрация: 10.12.2013
Сообщений: 7,917
29.01.2023, 15:29
в нестройной толпе CSV-файлов sqlite3 найдёт обрезанных сама

Bash
1
2
3
4
5
6
7
8
header=$(jot -s, -w'"%d"' 27)
for csv in *.csv; do sqlite3<<EOF 2>&1 | cut -d: -f1,2; done;
 
create table t($header);
.separator ;
.import $csv t
 
EOF
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.01.2023, 15:29
Помогаю со студенческими работами здесь

Поиск подстрок в текстовых файлах
Здравствуйте форумчане. Я уже несколько дней пытаюсь как то реализовать поиск в файлах по подстроке. На входе имеем 104 файла...

Поиск цифр в текстовых файлах
вот к примеру у меня есть 4 txt файла. В пером написана цифра 1 , 2 - цифра 2, 3 -3 ну итд. Можно ли как-то сделать чтобы комп...

Поиск слова в текстовых файлах
Пытаюсь реализовать прикладную програмку - консольный каталог. Хочу реализовать поиск введённого пользователем слова во всех текстовых...

Поиск совпадений в текстовых файлах
Нужно написать программу в которой два входных файла, 1файл содержит строки (например с адресами) второй файл содержит словарь (с улицами)...

Удаление пустых строк в текстовых файлах
Дан текстовый файл, в котором встречаются пустые строки. Надо написать программу которая эти пустые строки из текстового файла удалит, и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru