как подсчитать и удалить определенные строки с условием в CSV-файле?

Вы спрашивали

if there is any way to connect to oracle without "cx_oracle" and without installing Instant client

В документации , на которую ссылается сообщение об ошибке , четко указано

ODPI-C requires Oracle Client libraries, which are found in Oracle Instant Client, or an Oracle Database installation, or in a full Oracle Client installation.

Если у вас нет одного из этих трех параметров конфигурации, у вас не будет libclntsh.so, что, в свою очередь, означает, что вы не сможете программно подключиться к базе данных Oracle.

Как было предложено в комментарии вам может помочь вопрос/ответ StackOverflow, Python3 cx -Библиотека клиента Oracle Oracle не может быть загружена :«libclntsh.so» на Linux , хотя это предполагает, что вы действительно установили один из трех компонентов, которые, по-видимому, не хотите устанавливать.

0
25.09.2021, 15:29
2 ответа

Это похоже на домашнее задание!

Подсчет строк, в которых длина столбца 1 больше 3

awk 'length($1)>3 {c++} END {print c+0}'

Отбрасывать строки, в которых длина столбца 1 не равна 5

awk 'length($1)==5'

Отбрасывать строки, в которых длина столбца 1 не равна 5 и содержит нецифру

awk 'length($1)==5 && $1 !~ /[^0-9]/'

Используйте оболочку, чтобы направить вывод в новый файл.

Редактировать :Первоначально файл представлял собой файл, разделенный табуляцией, теперь он был отредактирован в формате CSV. Это означает, что решения должны быть

awk -F, 'length($1)>3 {c++} END {print c+0}'
awk -F, 'length($1)==5'
awk -F, 'length($1)==5 && $1 !~ /[^0-9]/'
2
25.09.2021, 17:40

Чтобы подсчитать количество строк, первое поле которых, разделенное запятой -, длиннее трех символов, удалите заголовок и все строки, первое поле которых не превышает четырех символов, а затем подсчитайте оставшиеся строки.

sed -e '1d' -e '/^[^,]\{4,\},/!d' file | wc -l

Команда dудаляет строку, адресованную предшествующим адресом (либо номером строки, либо регулярным выражением ). Если предыдущее условие не выполнено, !dинициирует удаление.

Выражение ^[^,]\{4,\},соответствует четырем или более не -запятым в начале строки, за которыми следует запятая.

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

sed -e '1b' -e '/^[[:digit:]]\{5\},/!d' file >newfile

Мы используем команду bдля перехода к концу скрипта для первой строки ввода, пропуская вперед к следующему циклу. Это гарантирует, что строка заголовка будет напечатана, а не удалена.

Выражение ^[[:digit:]]\{5\},соответствует ровно пяти цифрам в начале строки, за которыми следует запятая.

0
27.09.2021, 22:59

Теги

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