grep или sed для слова, содержащего строку - PullRequest
5 голосов
/ 09 ноября 2011

пример файла:

blahblah 123.a.site.com   some-junk
yoyoyoyo 456.a.site.com   more-junk
hihohiho 123.a.site.org   junk-in-the-trunk
lalalala 456.a.site.org   monkey-junk

Я хочу выделить все эти домены в середине каждой строки, у них всех есть общая часть a.site, с которой я могу работать, но я не могу понять, как это сделать, не возвращая всю строку

Может быть, здесь нужен sed или regex, так как простого grep недостаточно?

Ответы [ 2 ]

9 голосов
/ 09 ноября 2011

Вы можете сделать:

grep -o '[^ ]*a\.site[^ ]*' input

или

awk '{print $2}' input

или

sed -e 's/.*\([^ ]*a\.site[^ ]*\).*/\1/g' input
3 голосов
/ 25 октября 2013

Попробуйте найти что-нибудь в этой позиции

  $ sed -r "s/.* ([0-9]*)\.(.*)\.(.*)/\2/g"

 [0-9]* - For match number zero or more time.
 .*     - Match anything zero or more time.
 \.     - Match the exact dot.
 ()     - Which contain the value particular expression in parenthesis, it can be printed using \1,\2..\9. It contain only 1 to 9 buffer space. \0 means it contain all the expressed pattern in the expression.
...