Wie komme ich daraus:
randomcollege-nt\user90
dazu:
user90
benutzen sed
?
sed
Sie unter: grymoire.com/Unix/Sed.html
Wie komme ich daraus:
randomcollege-nt\user90
dazu:
user90
benutzen sed
?
sed
Sie unter: grymoire.com/Unix/Sed.html
Antworten:
Ich würde ein einfaches verwenden grep
, um zu suchen user90
:
$ echo "randomcollege-nt\user90" | grep -o user90
user90
Wenn user90 nicht konstant ist, bevorzugen Sie diesen Befehl:
$ echo "randomcollege-nt\user90" | grep -oP '(?<=randomcollege-nt\\)\w+'
user90
Zum Schluss benutzen Sie sed
, um die Datei an Ort und Stelle zu bearbeiten:
$ sed -ri 's/randomcollege-nt\\(user[0-9]+)/\1/' my_file
Oder um alle möglichen Benutzerkonten abzugleichen:
$ sed -ri 's/randomcollege-nt\\(\w+)/\1/' my_file
grep -F
die ganze Zeichenfolge.
Sie analysieren Text, um den Benutzernamen aus einer domain\username
Zeichenfolge zu extrahieren , wahrscheinlich aus Windows. Die meisten der obigen Antworten beziehen sich nur auf Ihre spezifische Beispielzeichenfolge.
Der beste Weg, dies zu tun, ist die Verwendung von Regex in sed, um das zu extrahieren, was danach kommt \
. So würden Sie es machen:
sed 's|.*\\\(.*\)|\1|'
Das passt zu allem ( .*
) bis zu einem Backslash (hier werden wir es maskieren, also ist es \\
), dann passt es zu allem nach dem Backslash ( .*
), macht es aber zu einer Erfassungsgruppe (dh, wir müssen Klammern um es wickeln, aber wir müssen auch maskieren) sie, so \(.*\)
). Jetzt, da wir , was kommt nach dem \
in der Zeichenfolge als Capture - Gruppe, wir drucken , indem sie sie mit der Referenzierung \1
.
Sie können den obigen sed
Befehl mit jedem Domain-Namen verwenden, nicht unbedingt randomcollege-nt
.
$ echo "randomcollege-nt\user90" | sed 's|.*\\\(.*\)|\1|'
user90
$ echo "domain\username" | sed 's|.*\\\(.*\)|\1|'
username
$ echo "anydomainname\roboman1723" | sed 's|.*\\\(.*\)|\1|'
roboman1723
Ein anderer sed
:
$ echo "randomcollege-nt\user90" | LC_ALL=C sed -e 's/.*\\//'
user90
oder POSIXly:
$ a='randomcollege-nt\user90'
$ printf '%s\n' "${a##*\\}"
user90
sh
Funktion. pubs.opengroup.org/onlinepubs/009604599/utilities/…
Ich weiß, dass Sie sed verwenden möchten, aber ich würde etwas anderes verwenden ...
echo "randomcollege-nt\user90" | cut -d'\' -f2
Ist das die Frage?
$ echo randomcollege-nt\user90| sed -e s,randomcollege-nt\,,
user90
wenn das sting randomcollege-nt nicht kontaminiert ist, benutze das awk Kommando oben / unten.
/user90
nichtuser90
Eher benutzt du 'awk' um "user90" zu filtern:
echo "randomcollege-nt\user90" | awk -F\\ {'print $2'}
Dieser einfache grep Befehl erledigt die Arbeit,
$ echo 'randomcollege-nt\user90' | grep -oP '[^\\]*$'
user90
Mit sed
delete alles in einer Zeichenkette vor einem bestimmten Zeichen (in doppelter Klammer [Specific char] definieren).
echo "randomcollege-nt\user90" | sed 's/.*[\]//'
Bedeutet, dass alle ( .*[\]
) Zeichen vor einem \
Zeichen durch Leerzeichen ( //
) ersetzt werden.
Wenn Sie eine Datei haben und ersetzen möchten, verwenden Sie das -i
Flag in dem sed
Befehl wie folgt :
sed -i 's/.*[\]//' /path/to/FileName
Die ursprüngliche Frage wurde gestellt sed
, aber ich sehe, dass Alternativen hier beliebt sind.
Wenn Sie Bash verwenden, ist die Parametererweiterung bei weitem die einfachste:
ORIGIN='randomcollege-nt\user90'
echo "${ORIGIN#*\\}"
Wenn Sie möglicherweise mehr als einen Backslash erwarten, verdoppeln Sie die Hash-Zeichen:
echo "${ORIGIN##*\\}"
Für weitere Informationen man bash
und suchen Sie nach Parameter Expansion
.
Für den Fall, dass jemand versucht, ein auskommentiertes Element # server_tokens off;
aus nginx automatisch zu entfernen , um bei automatischen Entwicklungsoperationen zu helfen:
sudo sed -ri 's/#\s(server_tokens off;)/\1/' /etc/nginx/nginx.conf
.
Getestet und lauffähig für Nginx / 1.12.1 unter Ubuntu 16.04 LTS. Verwandte Antwort zum Sperren von NGINX durch Deaktivieren von Servertoken hier .
man the_command_name
Sie ihn ein und Sie erhalten eine hilfreiche Bedienungsanleitung für den Befehl. Sie können auch zu www.google.com gehen und "befehlsname tutorial" eingeben. Dort finden Sie zahlreiche schrittweise Anleitungen.