Wörter aus einer Textdatei "rausfiltern" und in neue einsetzen

ivans89

Banned
Registriert
März 2018
Beiträge
275
Moin,
brauche mal etwas Hilfe.

Ich habe hier eine Text Datei mit 15000 Zeilen. In jeder Zeile stehen mehrere Variablen. Nun brauche ich aus jeder Zeile nur eine der

Hier mal ein Beispiel:

"37.120.157.195","us6478.nordvpn.com","@{ikev2=True; openvpn_udp=True; openvpn_tcp=True; socks=False; proxy=False; pptp=False; l2tp=False; openvpn_xor_udp=False; openvpn_xor_tcp=False; proxy_cybersec=False; proxy_ssl=True; proxy_ssl_cybersec=True; ikev2_v6=False; openvpn_udp_v6=False; openvpn_tcp_v6=False; wireguard_udp=True; openvpn_udp_tls_crypt=False; openvpn_tcp_tls_crypt=False; openvpn_dedicated_udp=False; openvpn_dedicated_tcp=False; skylark=False}"

Da sind alle Server von einem VPN Anbieter aufgelistet und ich möchte nun das sämtliche Server (usXXX.nordvpn.com) rausgefiltert werden und in eine neue Text Datei abgespeichert werden, oder das alles gelöscht wird außer der Variable. Allerdings ist die Zahl nach dem us immer unterschiedlich.
Ist dies Möglich?
 
mit NotePad und PowerShell, aber so richtig habe ich es nicht hinbekommen.
 
Das ist doch CSV, oder nicht?
Einfach in Excel (oder Pendants von anderen Office-Suites) importieren und du hast einzelne Spalten (drei?), von denen du die nicht benötigten löschen kannst.
 
  • Gefällt mir
Reaktionen: kuddlmuddl, BAGZZlash, BeBur und eine weitere Person
Hab erstemal die komplette Serverliste geladen mit:
$nordservers = Invoke-WebRequest -Uri https://nordvpn.com/api/server -UseBasicParsing -Method GET | where country -eq 'United States' | ConvertFrom-Json; $nordservers | export-csv -Path C:\nordservers.txt;

danach habe ich nur die USA Server filtern lassen in einer Textdatei mit:
$nordservers | where country -eq 'United States' | select ip_address,domain,features | export-csv -Path C:\nordservers.txt;

Das ganze wollte ich dann natürlich dann das er mir nur US Server anzeiget allerdings nur die "domain" und mit dem features: proxy_ssl=True:
$nordservers | where country -eq 'United States' | where features 'proxy_ssl=True' | select domain | export-csv -Path C:\nordserversxx.txt;

Ich kenne mich halt auch nicht wirklich mit PowerShell aus, habe mir nur den Kram aus dem Internet grob zusammengebastelt und getestet.
 
grep "us.*.nordvpn.com" file

Edit: Verbesserte Version:
grep "us[0-9]*\.nordvpn\.com" file

Oder halt python, etc ...
 
Zuletzt bearbeitet von einem Moderator:
  • Gefällt mir
Reaktionen: GroMag
Amaoto schrieb:
Das ist doch CSV, oder nicht?
Einfach in Excel (oder Pendants von anderen Office-Suites) importieren und du hast einzelne Spalten (drei?), von denen du die nicht benötigten löschen kannst.

Hatte ich natürlich auch versucht, allerdings stehen in der "domain" Spalte deutlich mehr als nur die tatssächliche Domain.
 
Du musst Komma als Trennzeichen wählen (nicht z.B. Semikolon).

Bildschirmfoto.png
 
Eine Antwort auf solche Fragen lautet immer regex. Einfach mal googlen, gibt auch onlinetester dafür.
 
  • Gefällt mir
Reaktionen: BachUhr
Ok ich habe es hinbekommen. Hab nach US mit PowerShell gefiltert und als .txt ausgegeben. Danach in Excel Importiert und konnte ganz easy alle Spalten löschen. Danach wieder in .txt exportieren und schon hatte ich genau das was ich brauche.

Danke an alle!
 
  • Gefällt mir
Reaktionen: kuddlmuddl
Code:
$ curl -s https://nordvpn.com/api/server | jq '.[].domain' | sed 's/"//g'

us5032.nordvpn.com
us5036.nordvpn.com
uk1780.nordvpn.com
ca942.nordvpn.com
se389.nordvpn.com
uk1778.nordvpn.com
nl711.nordvpn.com
...

$ curl -s https://nordvpn.com/api/server | jq '.[].domain' | sed 's/"//g' | wc -l
5074
komme auf 5074 einträge.
 
  • Gefällt mir
Reaktionen: Hayda Ministral, ivans89 und cgs
Code:
$nordservers= Invoke-RestMethod -Uri https://nordvpn.com/api/server -UseBasicParsing -Method GET | Where-Object {$_.domain -like 'us*'} #| ConvertFrom-Json; $nordservers | export-csv -Path C:\nordservers.txt;
$nordservers = $nordservers | Select-Object ip_address,domain,features

und dann halt export-tocsv ...?
 
Zurück
Oben