Замена в поисковом запросе - на :
Модераторы: /dev/random, Модераторы разделов
-
Voler
- Сообщения: 498
- ОС: Fedora
Замена в поисковом запросе - на :
Всем привет.
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
Подскажите как мне в запросе поменять налету - на :
-
s.xbatob
- Сообщения: 1139
- ОС: Fedora
-
Kopilov
- Сообщения: 958
- ОС: [K]Ubuntu, Debian
Re: Замена в поисковом запросе - на :
Или sed
Про tr не знал, спасибо.
Про tr не знал, спасибо.
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Замена в поисковом запросе - на :
Или regex составить, но я в них не силен.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
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.
Спасибо сказали:
-
yars
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: Замена в поисковом запросе - на :
Если нужны только MAC-и, без прочего текста в попавших под шаблон строках, у grep есть ключик -o.
P.S. Ну и cat | grep уже обсуждали, здесь cat не нужен.
P.S. Ну и cat | grep уже обсуждали, здесь cat не нужен.
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
Voler
- Сообщения: 498
- ОС: Fedora
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
- Модератор
- Сообщения: 21475
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Voler
- Сообщения: 498
- ОС: Fedora
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
- Модератор
- Сообщения: 21475
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Замена в поисковом запросе - на :
cat /var/log/messages | tr - : | grep -i C8:D3:A3:43:3F:80
Вы тут что-то странное пытаетесь сделать. Если используете временный файл, то зачем пайп?
Вы тут что-то странное пытаетесь сделать. Если используете временный файл, то зачем пайп?
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Voler
- Сообщения: 498
- ОС: Fedora
Re: Замена в поисковом запросе - на :
Это вариант работает, но мне нужно именно поиск делать по мак адресу 00-1b-21-36-05-d7
т.е. вы предлагаете все мак адреса переделывать во вхождении, а нужно на оборот один.
Вот это вариант лучше, ваш не плохо но если кол-во записей за пару тысяч.
т.е. вы предлагаете все мак адреса переделывать во вхождении, а нужно на оборот один.
Вот это вариант лучше, ваш не плохо но если кол-во записей за пару тысяч.
-
Bizdelnick
- Модератор
- Сообщения: 21475
- Статус: 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 работает быстрее более хитрых вариантов с регулярками.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
SLEDopit
- Модератор
- Сообщения: 4824
- Статус: фанат консоли (=
- ОС: GNU/Debian, RHEL
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.
Спасибо сказали:
-
Voler
- Сообщения: 498
- ОС: Fedora
Re: Замена в поисковом запросе - на :
или искать конкретный адрес 00-1b-21-36-05-d7 учитывая, что вхождения могут быть как с : так и с -?
Вот это нужно
Вот это нужно
-
moshell
- Сообщения: 27
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
-
s.xbatob
- Сообщения: 1139
- ОС: Fedora
Re: Замена в поисковом запросе - на :
Sed забыли! 
И чего только не напридумают любители всё делать через [censored]
И чего только не напридумают любители всё делать через [censored]
Спасибо сказали:
-
Voler
- Сообщения: 498
- ОС: Fedora
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Не отрабатывает и в файл не попадает значение.
-
moshell
- Сообщения: 27
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
- Модератор
- Сообщения: 21475
- Статус: 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 успевает что-то прочитать.
Потом, непонятно, как именно Вы запускаете этот скрипт. Показывайте полностью, что делаете, что получается, и объясняйте, чем это не устраивает.
Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Voler
- Сообщения: 498
- ОС: Fedora
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.
-
s.xbatob
- Сообщения: 1139
- ОС: Fedora
Re: Замена в поисковом запросе - на :
Делаю - что?
Я понятия не имею что хочет автор поста и зачем ему это надо. На тот вопрос, что он задал, я сразу ответил, причём так же подробно, как он спросил
Спасибо сказали:
-
Voler
- Сообщения: 498
- ОС: Fedora
Re: Замена в поисковом запросе - на :
s.xbatob лучше привести пример, а не писать не нужный пост.
За tr спасибо, реально работает.
Суть проблемы, что на Dlink мак адреса выглядят вот так C8-D3-A3-43-3F-80
Разве я не написал за чем нужно?
За tr спасибо, реально работает.
Суть проблемы, что на Dlink мак адреса выглядят вот так C8-D3-A3-43-3F-80
Разве я не написал за чем нужно?
-
bormant
- Сообщения: 1354
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
- Модератор
- Сообщения: 21475
- Статус: 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Пишите правильно:
| в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
Voler
- Сообщения: 498
- ОС: Fedora
Re: Замена в поисковом запросе - на :
Подправил
Код: Выделить всё
#!/bin/sh
result="$(echo "$1" | tr - :)"
if [ -n "$result" ] ; then
# делайте с ним что хотите
arp -a | grep $result
fi