Регулярное выражение

У меня есть код, который ищет определенный шаблон в моих файлах журнала. Обычно это начинается с идентификатора ассоциации = (это то, что я ищу в скобках). Теперь код, который я сделал до сих пор, генерирует синтаксис:

echo "Please enter the UID: ";
read uid

uidAssoc(){
        arg1=$1
        echo $arg1
        for arg1 in $(cat ~/jlog/server.log); do echo $word;done
        | sed 's/.AssociationID = \([*])\'
}
uidAssoc $uid

Может ли кто-нибудь подсказать, как исправить команду sed и получить ли она результаты, найденные с ее помощью?

Я попытался использовать вместо этого grep:

echo "Please enter the UID: ";
read uid

#Will parse through server log files for associaton
uidAssoc(){
        arg1=$1
        echo $arg1
        for arg1 in $(cat ~/jlog/server.log); do echo $word; done|
        grep Association ID ~/jlog/server.log |
        grep -E -o "[a-z0-9]" ~/jlog/server.log
}
uidAssoc $uid
exit

Вот мой ввод:

    Please enter the UID:
1.2.124.113532.80.22187.2757.20140503.123509.1190654364

И для вывода:

l
e
o
p
i
c
g
e
n
t
e
a
n
r
o
c
e
s
s
e
d
i
n
s
t
a
n
c
e
1
2
1
2
4
1
1
3
5
3
2
8
0
2
2
1
8
7
2
7
0
задан 16 June 2014 в 22:52

2 ответа

Я выяснил объем этого дома. У меня есть фрагмент кода ниже, и я просто должен настроить вокруг с ним для выяснения остальной части его:

echo "Please enter the UID: ";
read uid

#Will parse through server log files for associaton
uidAssoc(){
        arg1=$1
        echo $arg1
        for arg1 in $(cat ~/jlog/server.log); do echo $word;done |
        awk 'match($i, /Association ID = /){ print substr($i, RSTART,RLENGTH) 
        }
        ' ~/jlog/server.log
}
uidAssoc $uid
exit
0
ответ дан 16 June 2014 в 22:52

Вставьте это в свой sed сегмент. Ваш вывод отправляет новую строку в конце каждого символа.

Замена sed (после |):

sed ':a; N; $! ba; s/\n//g' 's/.AssociationID = ([*]) \'

Это считает целый файл в цикле, затем заменяет новую строку (строки) пространством.

Обновление: объяснение.

create a label via :a
append the current and next line to the pattern space via N
if we are before the last line, branch to the created label $!ba 
($! means not to do it on the last line (as there should be one final newline)).
finally the substitution replaces every newline with a space on the pattern space
(which is the whole file).

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

0
ответ дан 16 June 2014 в 22:52

Другие вопросы по тегам:

Похожие вопросы: