Замена в поисковом запросе - на :
Модераторы: /dev/random, Модераторы разделов
Замена в поисковом запросе - на :
Всем привет.
cat /var/log/messages | grep -i C8:D3:A3:43:3F:80
или
cat /var/lib/arpwath/iparp | grep -i C8:D3:A3:43:3F:80
Суть проблемы, что на Dlink мак адреса выглядят вот так C8-D3-A3-43-3F-80
Подскажите как мне в запросе поменять налету - на :
cat /var/log/messages | grep -i C8:D3:A3:43:3F:80
или
cat /var/lib/arpwath/iparp | grep -i C8:D3:A3:43:3F:80
Суть проблемы, что на Dlink мак адреса выглядят вот так C8-D3-A3-43-3F-80
Подскажите как мне в запросе поменять налету - на :
Re: Замена в поисковом запросе - на :
Или sed
Про tr не знал, спасибо.
Про tr не знал, спасибо.
Re: Замена в поисковом запросе - на :
Или regex составить, но я в них не силен.
Re: Замена в поисковом запросе - на :
я так понимаю вам нужно не только один определённый мак вытаскивать. а вообще все маки из лога, а потом менять. это выглядит примерно так:
Код: Выделить всё
grep -i "\([A-F0-9]\{2\}[:-]\)\{5\}[A-F0-9]\{2\}" /var/lib/arpwath/iparp | tr ':' '-'
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Re: Замена в поисковом запросе - на :
Если нужны только MAC-и, без прочего текста в попавших под шаблон строках, у grep есть ключик -o.
P.S. Ну и cat | grep уже обсуждали, здесь cat не нужен.
P.S. Ну и cat | grep уже обсуждали, здесь cat не нужен.
Re: Замена в поисковом запросе - на :
Еще раз поясню, cat /var/lib/arpwath/iparp | grep -i C8:D3:A3:43:3F:80
И этот мак C8:D3:A3:43:3F:80, я исправляю ручками.
Вопрос как можно сделать, так чтобы если я использую мак C8-D3-A3-43-3F-80, то нужно налету в маке поменять - на :
Т.е. не то что на выходе, а то что на входе.
И этот мак C8:D3:A3:43:3F:80, я исправляю ручками.
Вопрос как можно сделать, так чтобы если я использую мак C8-D3-A3-43-3F-80, то нужно налету в маке поменять - на :
Т.е. не то что на выходе, а то что на входе.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Замена в поисковом запросе - на :
Вопрос в том, как сделать правильнее
echo 00-1b-21-36-05-d7 > /tmp/mac | cat /tmp/mac | tr '-' ':'
Вот пример работает
echo 00-1b-21-36-05-d7 > /tmp/mac | cat /tmp/mac | tr '-' ':'
Вот пример работает
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
cat /var/log/messages | tr - : | grep -i C8:D3:A3:43:3F:80
Вы тут что-то странное пытаетесь сделать. Если используете временный файл, то зачем пайп?
Вы тут что-то странное пытаетесь сделать. Если используете временный файл, то зачем пайп?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Замена в поисковом запросе - на :
Это вариант работает, но мне нужно именно поиск делать по мак адресу 00-1b-21-36-05-d7
т.е. вы предлагаете все мак адреса переделывать во вхождении, а нужно на оборот один.
Вот это вариант лучше, ваш не плохо но если кол-во записей за пару тысяч.
т.е. вы предлагаете все мак адреса переделывать во вхождении, а нужно на оборот один.
Вот это вариант лучше, ваш не плохо но если кол-во записей за пару тысяч.
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
Вам не всё равно? Лишнее grep в любом случае отбросит.
Shell
% for i in `seq 9001`; do echo 00-00-00-00-00-00 >> macs; done
% echo 00-1b-21-36-05-d7 >> macs
% wc -l macs
9002 macs
% time cat macs | tr - : | grep -i 00:1b:21:36:05:d7
00:1b:21:36:05:d7
cat macs 0,00s user 0,00s system 0% cpu 0,027 total
tr - : 0,00s user 0,00s system 0% cpu 0,026 total
grep --color=auto -i 00:1b:21:36:05:d7 0,00s user 0,00s system 0% cpu 0,026 total
%
Тупая замена tr работает быстрее более хитрых вариантов с регулярками.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Замена в поисковом запросе - на :
что именно в итоге нужно то?
найти все вхождения конкретного адреса 00-1b-21-36-05-d7 и переделать - на : ?
или искать конкретный адрес 00-1b-21-36-05-d7 учитывая, что вхождения могут быть как с : так и с -?
или просто вытащить любые встречающиеся маки с : или -?
и ещё 100500 вариантов. или вы предлагаете поупражняться нам в телепатии?
UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity. © Dennis Ritchie
The more you believe you don't do mistakes, the more bugs are in your code.
The more you believe you don't do mistakes, the more bugs are in your code.
Спасибо сказали:
Re: Замена в поисковом запросе - на :
или искать конкретный адрес 00-1b-21-36-05-d7 учитывая, что вхождения могут быть как с : так и с -?
Вот это нужно
Вот это нужно
Re: Замена в поисковом запросе - на :
выбирай
$ echo -e "C8:D3:A3:43:3F:80\nC8-D3-A3-43-3F-80" | perl -ne 'print if /c8[-:]d3[-:]a3[-:]43[-:]3f[-:]80/i'
C8:D3:A3:43:3F:80
C8-D3-A3-43-3F-80
$ echo -e "C8:D3:A3:43:3F:80\nC8-D3-A3-43-3F-80" | grep -iE "c8[-:]d3[-:]a3[-:]43[-:]3f[-:]80"
C8:D3:A3:43:3F:80
C8-D3-A3-43-3F-80
Re: Замена в поисковом запросе - на :
Sed забыли!
И чего только не напридумают любители всё делать через [censored]
И чего только не напридумают любители всё делать через [censored]
Спасибо сказали:
Re: Замена в поисковом запросе - на :
В идеале нужен вариант где мак - 28-10-7B-EF-3B-09 используется именно в этом виде.
Дальше я запускаю команду ./mac_find.sh 28-10-7B-EF-3B-09
1. Происходит конвертация с 28-10-7B-EF-3B-09 в 28:10:7B:EF:3B:09 и поиск последнего там где нужно
tr работает хорошо, но когда пишу в скрипт
Код: Выделить всё
#!/bin/bash
echo $1 > /tmp/mac | cat /tmp/mac | tr '-' ':' > /tmp/mac
Не отрабатывает и в файл не попадает значение.
Re: Замена в поисковом запросе - на :
$ echo -e "C8:D3:A3:43:3F:80\nC8-D3-A3-43-3F-80" | sed /c8.d3.a3.43.3f.80/p
C8:D3:A3:43:3F:80
C8-D3-A3-43-3F-80
$ echo -e "C8:D3:A3:43:3F:80\nC8-D3-A3-43-3F-80" | awk /c8.d3.a3.43.3f.80/p
C8:D3:A3:43:3F:80
C8-D3-A3-43-3F-80
не, не катит. у доктора спроси. он сед пропагандирует
а ты как делаешь?
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
Voler писал(а): ↑25.10.2015 12:52tr работает хорошо, но когда пишу в скрипт
Код: Выделить всё
#!/bin/bash echo $1 > /tmp/mac | cat /tmp/mac | tr '-' ':' > /tmp/mac
Ну и зачем Вы так пишете? Я же Вам уже сказал, что это бред. Или используйте конвейер, или временный файл, одно из двух. Хотя зачем тут временный файл — не представляю. Но если так уж хочется — пишите не в тот файл из которого читаете, а в другой. В Вашей конструкции шелл открывает файл на запись и обнуляет его ещё до того, как cat успевает что-то прочитать.
Потом, непонятно, как именно Вы запускаете этот скрипт. Показывайте полностью, что делаете, что получается, и объясняйте, чем это не устраивает.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Замена в поисковом запросе - на :
Bizdelnick
В идеале ./script C8-D3-A3-43-3F-80
Лучше конвертировать мак адрес налету без временного файла, и осуществлять полученный результат в скрипте для дальнейшего использования.
Т.е. поиск вести по маку C8:D3:A3:43:3F:80.
В идеале ./script C8-D3-A3-43-3F-80
Лучше конвертировать мак адрес налету без временного файла, и осуществлять полученный результат в скрипте для дальнейшего использования.
Т.е. поиск вести по маку C8:D3:A3:43:3F:80.
Re: Замена в поисковом запросе - на :
Делаю - что?
Я понятия не имею что хочет автор поста и зачем ему это надо. На тот вопрос, что он задал, я сразу ответил, причём так же подробно, как он спросил
Спасибо сказали:
Re: Замена в поисковом запросе - на :
s.xbatob лучше привести пример, а не писать не нужный пост.
За tr спасибо, реально работает.
Суть проблемы, что на Dlink мак адреса выглядят вот так C8-D3-A3-43-3F-80
Разве я не написал за чем нужно?
За tr спасибо, реально работает.
Суть проблемы, что на Dlink мак адреса выглядят вот так C8-D3-A3-43-3F-80
Разве я не написал за чем нужно?
Re: Замена в поисковом запросе - на :
Voler
так и не понял, что именно было нужно, но одно из должно подойти:
так и не понял, что именно было нужно, но одно из должно подойти:
Код: Выделить всё
grep -i C8[:-]D3[:-]A3[:-]43[:-]3F[:-]80 /var/log/messages
grep -i C8[:-]D3[:-]A3[:-]43[:-]3F[:-]80 /var/log/messages | tr '-' ':'
grep -i C8[:-]D3[:-]A3[:-]43[:-]3F[:-]80 /var/log/messages | tr ':' '-'
- Bizdelnick
- Модератор
- Сообщения: 20752
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
Код: Выделить всё
#!/bin/sh
result="$(echo "$1" | tr - : | grep -i C8:D3:A3:43:3F:80)"
if [ -n "$result" ] ; then
# делайте с ним что хотите
fi
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
Re: Замена в поисковом запросе - на :
Подправил
Код: Выделить всё
#!/bin/sh
result="$(echo "$1" | tr - :)"
if [ -n "$result" ] ; then
# делайте с ним что хотите
arp -a | grep $result
fi