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

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

26.01.2023, 14:56. Показов 582. Ответов 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
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,863
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
Покинул форум
3700 / 1483 / 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
6686 / 2278 / 347
Регистрация: 10.12.2013
Сообщений: 7,863
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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru