LINUX.ORG.RU
решено ФорумAdmin

grep+less

 , ,


0

1

Вопрос от одминко: появилась потребность напейсать простенький скрипт по парсингу логов. Есть массив логов вида xxx.log и надо из него грепнуть конкретный, да передать в less. Что-то вроде: grep xxx.log | less Но, естественно, просматривать так можно только выхлоп грепа. Как тут правильно поступить, посоветуете?


надо из него грепнуть конкретный

что это значит? по какому критерию «грепнуть»? по определенному содержимому в логе? по имени?

Pinkbyte ★★★★★
()

А что нужно то? Если надо сделать конкатенацию выхлопа c другими файлами, то можно это сделать так:

sh-4.3$ cat footer
This is footer
sh-4.3$ cat header
This is header
sh-4.3$ cat foo
1 abc
2 Content is here
3 sdf
sh-4.3$ grep 2 foo | cat header - footer | less
This is header
2 Content is here
This is footer
Tanger ★★★★★
()
$ cat `ls -1 | grep xxx` | less
anonymous
()
Ответ на: комментарий от Pinkbyte

По имени файла. И передать выбранный файл в less.

zad1ra
() автор топика
Ответ на: комментарий от Pinkbyte

ну, пробелов там нету :) Имена вида xxx-yyy.zzz.log Проблема именно в передаче результата грепанья как аргумента less.

zad1ra
() автор топика

Ищи прямо внутри less
less xxx.log<Enter>
/чтоищем<Enter>

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

наверно не корректно указал проблему: есть куча лог-файлов, из которых конструкцией ls | grep regexp выдирается потребный файл. И надо его передать в less, для просмотра. Типа less -file_name-. По отдельности (найти нужный файл или просмотреть его) проблем нет, а вот увязать в один конвейер не получается :(

zad1ra
() автор топика
Ответ на: комментарий от Pyzia

Неа.

pinkbyte@oas1 ~/1 $ touch '1 2'
pinkbyte@oas1 ~/1 $ ls -la
итого 8
drwxr-xr-x   2 pinkbyte users 4096 окт  5 19:09 .
drwxr-xr-x 104 pinkbyte users 4096 окт  5 19:09 ..
-rw-r--r--   1 pinkbyte users    0 окт  5 19:09 '1 2'
pinkbyte@oas1 ~/1 $ cat `find -name "1 2"`
cat: ./1: Нет такого файла или каталога
cat: 2: Нет такого файла или каталога

Такой вариант:

pinkbyte@oas1 ~/1 $ cat "`find -name "1 2"`"
pinkbyte@oas1 ~/1 $ 

сработает, но только при условии что find вернет 1 файл - тоже не идеально.

Но ТС сказал, что пробелов у него там нет, окей...

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

нет. Т.к. отказаться от grep в угоду find там вообще ни как (грепается по весьма некороткой регулярке).

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

Блин, как проще-то объяснить? Есть куча файлов. С помощью конвейера ls | grep выбираю нужный. И вот этот нужный файл нужно как-то передать в less для просмотра.

zad1ra
() автор топика
Ответ на: комментарий от zad1ra

Конструкцию, которой вы ищете, в полном объеме можно привести? А вообще xargs - первое, что приходит в голову.

ls -l xxx.log | awk '{print $9}'| xargs less

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

Спасибо. Вроде получается. Можно наверно закрывать тему :)

Ну вы блин и решение взяли. Это самое идиотское что можно было придумать. Юзать ls с длинным выводом от которого требуется только имена...

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

Аа... Ну, как объяснил - так и понял :)

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