У меня есть куча CSV-файлов в папке (ОС: Ubuntu). Все они на одной структуре. более 2 тыс. столбцов (вот как это получилось). Первый столбец - ID.Текстовые файлы, управляемые в Linux
Я не в состоянии работать с SQL (фигу почему), поэтому я думаю, что мне нужно будет работать с командой Баш, такие как awk
, cut
, sed
, и т.д., которые у меня есть базовые знания о них.
мне нужно сделать следующее: Выполнить над файлами (как файлы объединены в один файл): для каждого четного столбца, проверьте, если он имеет одно неоспоримое значение, равное 0
-> если да, удалите столбец и следующий столбец. Кроме того, мне нужно напечатать в новом файле индекс удаленных столбцов.
Пример
file_1:
2231, 0, 5, 0, 9, 0, 9, 3, 3
1322, 0, 5, 0, 1, 0, 9, 2, 5
1233, 5, 5, 0, 3, 0, 9, 4, 6
1543, 2, 5, 0, 4, 0, 9, 6, 1
2341, 0, 5, 0, 7, 0, 9, 0, 2
files_2:
1322, 0, 5, 0, 3, 0, 9, 1, 2
1432, 0, 5, 0, 0, 0, 9, 3, 7
1434, 0, 5, 0, 8, 0, 9, 1, 4
1132, 0, 5, 0, 4, 0, 9, 3, 5
1434, 0, 5, 0, 7, 0, 9, 1, 0
Ожидаемый результат:
Removed index columns file: 4, 5, 6, 7
file_1 content:
2231, 0, 5, 3, 3
1322, 0, 5, 2, 5
1233, 5, 5, 4, 6
1543, 2, 5, 6, 1
2341, 0, 5, 0, 2
files_2 content:
1322, 0, 5, 1, 2
1432, 0, 5, 3, 7
1434, 0, 5, 1, 4
1132, 0, 5, 3, 5
1434, 0, 5, 1, 0
Можно ли сделать это с помощью одного из этих команд Баш? Если да, то как? Любое другое решение будет хорошо, но я предпочитаю команды bash.
Есть много способов сделать это, в том числе bash и/или sed, awk и т. д. Q: Какие языки программирования - если таковые имеются - вы чувствуете себя наиболее комфортно? C? Ява? Perl? Python? Bash? Другие? – paulsm4
Как я уже сказал, я предпочитаю баш. Python тоже будет хорош. Я очень хорошо разбираюсь в Java и SQL, но я не могу использовать их в этом случае (неважно, почему). – Omri
Вы можете преобразовать их в некоторые [sqlite] (http://sqlite.org/), а затем использовать SQL в этом файле '.sqlite'. –