Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / cut хочу / 16 сообщений из 16, страница 1 из 1
18.04.2013, 00:54
    #38230151
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Есть много-мегабайтный файл с таблицей. Надо вырез а ть из этого файла определенные колонки.
Идеально подошел бы стандартный cut, но у файла необычные разделители строк (\n легальный символ внутри полей). А стандартный cut использует \n для разделения на строки и это не меняется без перекомпиляции.
Думал попробовать awk использовать, но там сложности с заданием списка колонок, перечислять вручную все нужные колонки типа `print $1, $2, .... $123;` мне кажется не совсем правильным. А разбор списков как у cut "1-123,456-" на awk сделать не так просто.

Есть идеи как решить задачу наименьшей кровью? А то я уже начинаю склоняться к патченью cut'а.
...
Рейтинг: 0 / 0
18.04.2013, 04:06
    #38230184
Ёш
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
White Owl,

find /usr -print0 | perl -0 -F'/' -an -e 'print((join "@", @F[1..2,4..5]), "\n");'

у -0 есть необязательный аргумент — разделитель записей
...
Рейтинг: 0 / 0
18.04.2013, 17:53
    #38231429
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Мило. С этим действительно можно жить.
Одна проблема - на сервере где это будет крутится нету Перла. Но это поправимо :)
...
Рейтинг: 0 / 0
18.04.2013, 19:18
    #38231567
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Если там \n - разрёшенный символ внтури поля то как в этом файле разделяются вообще строки (записи) ?
...
Рейтинг: 0 / 0
18.04.2013, 19:54
    #38231607
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
maytonЕсли там \n - разрёшенный символ внтури поля то как в этом файле разделяются вообще строки (записи) ?Другим символом естественно.
У нас есть 32 непечатных символа с кодами от 0 до 31. Если из этого списка убрать девятый и тринадцатый (потому что они есть на клавиатуре и соответственно могут быть внутри текста) у нас еще остается 30 символов на выбор.
Сейчас я использую рожицы (chr(1) и chr(2)) - одну для разделения полей, другую для разделения строк.
...
Рейтинг: 0 / 0
18.04.2013, 22:19
    #38231730
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
White Owl,

Код: php
1.
cut -d $'\x01' -f <COLUMN> <FILE>
...
Рейтинг: 0 / 0
18.04.2013, 22:40
    #38231751
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Usman,

А теперь иди и прочитай первый пост топика внимательнее.
...
Рейтинг: 0 / 0
18.04.2013, 23:13
    #38231792
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
White Owl,

Прочитал внимательно. Пример в моем посте считает
границей колонок - рожицу chr(1) и выводит из списка <COLUMNS> .
...
Рейтинг: 0 / 0
18.04.2013, 23:21
    #38231799
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Usman,

А теперь прочитай ЕЩЁ внимательнее.
...
Рейтинг: 0 / 0
19.04.2013, 05:26
    #38231926
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
White Owl,

Код: php
1.
cat <FILE> | while read -d $'\x02' LINE; do echo $LINE | cut -d $'\x01' -f <COLUMNS>; done;
...
Рейтинг: 0 / 0
19.04.2013, 18:49
    #38233399
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Usman,

Ну наконец-то. Суть проблемы ты уловил.
Теперь переходим на винды и теряем sh.... Ваше решение?
...
Рейтинг: 0 / 0
19.04.2013, 20:18
    #38233476
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
White OwlВаше решение? Поставить Cygwin и радоваться тому, что мой скрипт продолжает работает.
...
Рейтинг: 0 / 0
29.11.2013, 07:27
    #38482806
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
White OwlUsman,

Ну наконец-то. Суть проблемы ты уловил.
Теперь переходим на винды и теряем sh.... Ваше решение?

Белая Сова, ты великий воин, но в своём первом сообщении сам же упоминал awk; в уиндусе есть awk ?
...
Рейтинг: 0 / 0
29.11.2013, 09:16
    #38482860
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
volodin661в уиндусе есть awk ?
gawk.exe скопировать - неразрешимая задача.
...
Рейтинг: 0 / 0
29.11.2013, 12:57
    #38483184
cut хочу
Изопропилvolodin661в уиндусе есть awk ?
gawk.exe скопировать - неразрешимая задача.


awk - вне прадигмы работы в уиндосе.

Предлагаю ТС потренироваться с загрузкой структуры в экслель.
...
Рейтинг: 0 / 0
30.11.2013, 10:15
    #38484286
volodin661
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cut хочу
Изопропилvolodin661в уиндусе есть awk ?
gawk.exe скопировать - неразрешимая задача.


разрешимая. и перл для уиндус поставить немногим дольше.
просто я за справедливость, в изначальном посте про мультиплатформенность нет ни слова.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / cut хочу / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]