У меня есть код, который ищет определенный шаблон в моих файлах журнала. Обычно это начинается с идентификатора ассоциации = (это то, что я ищу в скобках). Теперь код, который я сделал до сих пор, генерирует синтаксис:
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
Я выяснил объем этого дома. У меня есть фрагмент кода ниже, и я просто должен настроить вокруг с ним для выяснения остальной части его:
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
Вставьте это в свой 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.