LinuxForum.Fans
Тема

Обработка текстового файла в консоли

Автор: TuLiss 12 сообщений 4038 просмотров
#185219

Сразу скажу, что задачу решил на perl. Но вот явно можно сделать утилитами в linux.

Есть некая структура

1;2;3;4;5;6;некий текст больше 10 символов.

как обрезать текст до 10 символов, если известно, что кол-во запятых постоянно т.е. 6.

И еще, есть примеры для обработки файлов с такими задачами на python ?
Ну там, удалить строку через 4 строчки, заменить файлы пробелов, после двух цифр слева.

Зарание спс.

P.S. Надо было в раздел програмирование :/

#185296
TuLiss написал:
Сразу скажу, что задачу решил на perl. Но вот явно можно сделать утилитами в linux.

Есть некая структура

1;2;3;4;5;6;некий текст больше 10 символов.

как обрезать текст до 10 символов, если известно, что кол-во запятых постоянно т.е. 6.

И еще, есть примеры для обработки файлов с такими задачами на python ?
Ну там, удалить строку через 4 строчки, заменить файлы пробелов, после двух цифр слева.

Зарание спс.

P.S. Надо было в раздел програмирование :/

sed, awk.

#185304

на sed будет примерно так выглядеть:
[console]echo '1;2;3;4;5;6;некий текст больше 10 символов.' | sed -r 's/^(([^;];){6}.{10}).*$/\1/'[/console]

основной специалист по sed'у сейчас в бане, вернётся - может чего попроще напишет/поправит....

#185497

Он вроде не в бане.

#185835
TuLiss написал:
1;2;3;4;5;6;некий текст больше 10 символов.
как обрезать текст до 10 символов, если известно, что кол-во запятых постоянно т.е. 6.

до 10 символов в начале или в конце? вы-бы хоть написали, что имеете на входе, и что желаете иметь на выходе.

Fat-Zer написал:
echo '1;2;3;4;5;6;некий текст больше 10 символов.' | sed -r 's/^(([^;];){6}.{10}).*$/\1/'
основной специалист по sed'у сейчас в бане, вернётся - может чего попроще напишет/поправит....

могли-бы и не разбанивать, я тоже самое напишу ;)

TuLiss написал:
Ну там, удалить строку через 4 строчки

sed '1~4d'

TuLiss написал:
аменить файлы пробелов, после двух цифр слева.

не понял.

#185840
drBatty написал:
могли-бы и не разбанивать, я тоже самое напишу

это не я :o

#185844

Fat-Zer, я знаю. Вы только после ] плюс забыли. Сломается на 123;2311;1;1;2;17;

#185847
drBatty написал:
Fat-Zer, я знаю. Вы только после ] плюс забыли. Сломается на 123;2311;1;1;2;17;

нуда... хотя, что тут ТС хотел... если один символ+ верификатор, то, как у меня...

#186265

А для упрощения ещё можно вставить в середину пайплайна cut -d ";" -f7

#186598
Vascom написал:
А для упрощения ещё можно вставить в середину пайплайна cut -d ";" -f7

это во первых усложнение, а во вторых сильное замедление. Две команды будут работать всяко медленнее, чем одна.
Если вы плохо знаете английский, не нужно некоторые слова писать по-русски, смешанный текст читать ещё сложнее, чем неграмотный английский. Пишите либо всё по-русски, либо всё по-английски.

ЗЫЖ и ещё: с этой вашей cut вы поимеете проблем по полной программе, если вам встретятся UTF-8 символы. Ибо она их не понимает.

#186599

А по моему, это всё же упрощение, ибо синтаксис sed читать и понимать сложнее. Да и задача не видеокодирования стоит чтобы о скорости задумываться, этот критерий автором топика не был озвучен.

Странно слышать претензии по смешанному тексту, от человека пишущего "ЗЫЖ" :)

#186612
Vascom написал:
А по моему, это всё же упрощение, ибо синтаксис sed читать и понимать сложнее.

А придётся. Ведь остальное всё равно на sed.

Vascom написал:
Да и задача не видеокодирования стоит чтобы о скорости задумываться, этот критерий автором топика не был озвучен.

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

ЗЫЖ и вообще: sed объективно проще, чем sed + cut. ;)

Войдите или зарегистрируйтесь, чтобы ответить.