2011-11-09 4 views
4
de fichier

exemple:grep ou sed pour mot contenant la chaîne

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 

Je veux grep tous ces domaines au milieu de chaque ligne, ils ont tous une partie commune a.site avec laquelle je peux grep, mais Je ne peux pas travailler comment le faire sans retourner toute la ligne?

Peut-être que sed ou une regex est nécessaire ici car un simple grep ne suffit pas?

Répondre

8

Vous pouvez faire:

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

ou

awk '{print $2}' input 

ou

sed -e 's/.*\([^ ]*a\.site[^ ]*\).*/\1/g' input 
+0

Merci, le top est exactement ce dont j'avais besoin. Cela m'a donné du matériel pour Google aussi, donc double merci :) – jwbensley

3

Essayez ceci pour trouver quoi que ce soit dans cette position

$ 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. 
+0

Il serait mieux si vous avez expliqué votre réponse un peu, c'est un peu complexe pour reg newbs comme moi :) – jwbensley

Questions connexes