2016-09-22 5 views
-2

Also der folgende Befehl in Linux ist eine Nginx access.log-Datei von denen bestellen die meisten Anfragen.Linux Bash Shell Befehl in Windows Powershell

'awk '{ print $1 }' access.log | uniq -c | sort -nr | more' 

Was ist das Äquivalent für diesen Befehl in Windows PowerShell?

+0

Stackoverflow ist kein kostenloser Codeübersetzungsdienst. Bitte geben Sie an, was Sie versucht haben und was * was Sie nicht wissen. – kaylum

Antwort

0
Get-Content access.log | ForEach-Object { $_.split()[0] -as [IPAddress] } | Sort-Object | Select-Object -Unique -ExpandProperty IPAddressToString 

oder

gc access.log |%{ $_.Split()[0] -as [IPAddress] } | sort -U |%{ "$_" } 
  1. Lesen der Datei
  2. Prozess Zeile für Zeile
  3. Split auf Räume und nehmen das erste Element
  4. Guss es zu einer Art IPAddress so dass es wird numerisch sortiert
  5. Sortieren und deduplizieren in einer Richtung oder eine andere
  6. die Stringdarstellung der [IPAddress] Raus zurück

NB. Ihr Code tut nicht, was Sie behaupten; Sie müssen zuerst sortieren, bevor uniq, da es nur aufeinanderfolgende Duplikate entfernt, nicht alle Duplikate.

Verwandte Themen