Awk: извлечь содержимое в bcracket - PullRequest
0 голосов
/ 13 июня 2011

Какой хороший способ извлечь foo.com из строки с помощью awk?

ImaString (foo1.com, ,bar.com) (foo2.com, , bar.com)

Вывод я хочу: foo1.com foo2.com

Ответы [ 4 ]

2 голосов
/ 13 июня 2011

Если в списках, разделенных запятыми, имеется более одного поля:

awk -F, -v RS="[)(]" 'NF>1{print $1}' inputfile
1 голос
/ 13 июня 2011

Извините за язвительный комментарий, но вопрос не сформулирован четко.Вы можете попробовать установить в FS регулярное выражение "(|," и позволить awk автоматически извлечь для вас поле:

$ awk -F ',|\\(' ...
0 голосов
/ 13 июня 2011

Вы уверены, что хотите использовать awk для этого? Sed и grep кажутся лучшим выбором для этого.

$ echo "ImaString (foo1.com, ,bar.com) (foo2.com, , bar.com)" | 
  grep -E -o '\(([a-zA-Z0-9]*\....),' | sed -e 's/^.//' -e 's/,$//'
foo1.com
foo2.com

Сбросить результаты в переменную bash, сосчитать их с помощью wc или вставить в массив bash.

0 голосов
/ 13 июня 2011

Вопрос все еще немного неясен, вы спрашиваете об этом?

$ echo "ImaString (foo.com, ,bar.com) (foo.com, , bar.com)" | 
  awk -F '(' '{sub(/,.*/,"", $2);{print $2}}'
foo.com
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...