2017-12-14 9 views
-3

Ich möchte SED verwenden, um eine Datei zu filtern und nur die ID zu erhalten, die aus 3 Zahlen und der Domain besteht (z. B. google.com).Verwenden Sie SED, um eine Datei zu filtern

Original File:

451 [04/Jan/1997:03:35:55 +0100] http://www.netvibes.com 
448 [04/Jan/1997:03:36:30 +0100] www.google.com:443 
450 [04/Jan/1997:03:36:48 +0100] http://84.55.151.142:8080 
452 [04/Jan/1997:03:36:51 +0100] http://127.0.0.1:9010 
451 [04/Jan/1997:03:36:55 +0100] http://www.netvibes.com 
453 [04/Jan/1997:03:37:10 +0100] api.del.icio.us:443 
453 [04/Jan/1997:03:37:33 +0100] api.del.icio.us:443 
448 [04/Jan/1997:03:37:34 +0100] www.google.com:443 

Gebrauchte SED-Befehle: sed -e 's/\[[^]]*\]//g' -e 's/http:\/\///g' -e 's/www.//g' -e 's/^.com//g' -e 's/:[0-9]*//g'

Stromausgang:

451 netvibes.com 
448 google.com 
450 84.55.151.142 
452 127.0.0.1 
451 netvibes.com 
453 api.del.icio.us 
453 api.del.icio.us 
448 google.com 

Gewünschter Ausgang:

451 netvibes.com 
448 google.com 
451 netvibes.com 
448 google.com 

Antwort

3

mit grep

sed ... | grep -F '.com' 

oder

sed ... | grep '\.com$' 

oder mit sed -n, p mit Spiel drucken

sed -ne 's/\[[^]]*\]//g;s/http:\/\///g;s/www.//g;s/:[0-9]*//g;/.com$/p' 
1

Erwartet you'v e api.del.icio.us in Ihrem Wunsch Ausgang verloren so:

cat testfile | awk '{print $1" "$NF}' | sed -r 's/http\:\/\/*//g;s/www\.//g' | awk -F: '{print $1}' | sed -r 's/([0-9]{1,3}) [0-9].*/\1 /g' | sed -r 's/[0-9]{3} $//g' | grep -v '^$' | uniq 

Wenn Sie nur * brauchen .com-Domains, bekommt es:

Katze testdat | awk '{print $ 1 "" $ NF}' | sed -r 's/http: // * // g; s/www .// g' | awk -F: '{print $ 1}' | sed -r 's/([0-9] {1,3}) [0-9]. */\ 1/g' | sed -r 's/[0-9] {3} $ // g' | grep -v '^ $' | grep com | uniq

1

Hier ist eine in awk:

$ awk 'match($NF,/[^\.]+\.[a-z]+($|:)/) { 
    print $1,substr($NF,RSTART,RLENGTH-($NF~/:[0-9]+/?1:0)) 
}' file 
451 netvibes.com 
448 google.com 
451 netvibes.com 
453 icio.us 
453 icio.us 
448 google.com 

Wenn Sie nur die .coms möchten, ersetzen Sie [a-z]+ im match regex mit com.

Verwandte Themen