LINUX.ORG.RU

Поиск по файлу


0

1

У меня такая проблема. Есть файл, он очень большой, состоит, в основном из строчек типа: textanytext Parametr_A11 textanytext Parametr_A12 и тд. Как вытащить 2ю позицию из каждой такой строчки? Способами bash. (Просто саму команду не знаю, можете вы подскажите, гугл предлагает только grep.)

grep "textanytext .* textanytext .*" <file> | cut -f2 -d ' '

или

grep "textanytext .* textanytext .*" <file> | awk '{ print $2 }'
kostik87 ★★★★★ ()
Ответ на: комментарий от kostik87

grep ... awk

Таки полагаете, что awk «/../ {}» будет критично медленнее?

anonymous ()

dialog

У меня такая проблема. Есть файл, он очень большой, состоит, в основном из строчек типа: textanytext Parametr_A11 textanytext Parametr_A12 и тд. Как вытащить 2ю позицию из каждой такой строчки?

я так и не понял, что у вас за строчки, и что такое «позиция» по вашему. Если «позиции» это поля разделённые пробелом, то вытащить второе поле можно так

sed -r 's/^\S+\s+//;s/\s.*//' файл

drBatty ★★ ()
Ответ на: комментарий от drBatty

Но зачем исп. регекспы, когда достаточно простого split'a (cut, awk, ...)

sdio ★★★★★ ()
Ответ на: комментарий от anonymous

он ламер и даже не открыл man awk, прежде чем запостить
анон гарантирует

anonymous ()
Ответ на: комментарий от sdio

потому-что ламеры, которые не хотят читать ман, должны платить $$$. Или сделать вдоль.

drBatty ★★ ()
Ответ на: комментарий от anonymous

За уточнение спасибо, но я изучаю неизвестный мне функционал команды (программы), в том случае, если я не могу решить проблему используя функционал, который мне уже известен, так что предложенный мной способ может быть не совсем «элегантен», но он работает.

С другой стороны использование одной программы предпочтительнее, чем использование нескольких программ с передачей данных через «трубу».

Такой подход конечно не совсем хорош, но, по крайне мере, для решения возникающих задач этого достаточно.

kostik87 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.