командная строка grep, linux - PullRequest
0 голосов
/ 28 января 2011

Я пытаюсь изолировать все имена серверов (т. Е. Sv012-cali) из html-файла «Servernick»: «sv012-cali» в строковом коде ниже. Я думаю, что это кавычка, которая его отбрасывает

cat smtest.html | tr '"' '\n' | grep "^Servernick":"" | cut -d '"' -f 2

фрагмент файла данных html "Отношение": 0}, {"ID": 415804 "," Servernick ":" sv012-cali "," Level ":" 3 "

Ответы [ 3 ]

2 голосов
/ 28 января 2011

Используйте одинарные кавычки при работе со строками, содержащими двойные кавычки:

grep '^Servernick":"'
2 голосов
/ 28 января 2011

Вам нужно избежать кавычек. В bash используйте \ для экранирования символов:

grep "^Servernick\":\""

или альтернативно поместите ваши двойные кавычки в одинарные кавычки:

grep '^servernick":"'
1 голос
/ 28 января 2011

Обновлено после предоставления данных образца OP -

# cat test.data                                                  
"Relation":0},{"ID":415804","Servernick":"sv012-cali","Level":"3"
"Relation":0},{"ID":415804","Servernick":"sv012-balh","Level":"3"
# cat test.data | tr "," "\n" | grep Servernick | cut -d '"' -f 4
sv012-cali
sv012-balh

Оригинальный ответ -

Это то, что тебе нужно?

# echo \"Servernick\":\"sv012-cali\"  > test.data  
# cat test.data                                  
"Servernick":"sv012-cali"
# cat test.data  | tr '"' '\n'                                          

Servernick
:
sv012-cali

# cat test.data  | tr '"' '\n' | egrep -v "Servernick|:|^$"
sv012-cali
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...