2012-05-22 3 views
0

J'ai fichier journal avec des lignes comme:Comment rechercher un motif dans un fichier par Linux CLI?

07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}

Comment puis-je obtenir que www.website.pl/some,site.html de toutes les lignes? Est-ce que cela peut être fait avec "sed" ou une autre commande?

Répondre

1

Oui, avec awk.

processus simplement votre fichier avec

awk -F '|' '{print $7}' 

Une petite transcription sur votre ligne exemple:

$ echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}' | awk -F '|' '{print $7}' 
www.website.pl/some,site.html 

CAVEAT Cela suppose qu'il n'y a pas d'autres tuyaux dans votre fichier sauf ceux utilisés pour délimiteurs.

+0

thats it! Merci – Kamilos

2

Couper prend également en charge la sélection des délimiteurs et des champs.

$ cut -d\| -f7 
07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{} 
www.website.pl/some,site.html 
0

Cela pourrait fonctionner pour vous:

echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}'| 
sed 's/^\(\([^|]*\)|\)\{7\}.*/\2/' 
www.website.pl/some,site.html 

Ou si les sites commencent tous www:

echo '07:44:24||||234.234.234.234|123.123.123.123|www.website.pl/some,site.html|a:0:{}'| 
sed 's/.*\(www[^|]*\).*/\1/' 
www.website.pl/some,site.html 
Questions connexes