Ich habe eine Datei mit Text im Format:
User\ Name My\ Password
Beachten Sie, dass dies tatsächlich eine 2-spaltige Datei ist, wobei die Spalten maskierte Leerzeichen enthalten.
cut -d' ' -f2
produziert Name
, aber ich möchte produzieren My Password
.
Ist es möglich, cut
nur auf der Grundlage von nicht maskierten Leerzeichen zu trennen? Wenn nicht, welchen alternativen Befehl kann ich verwenden?
Antwort1
Ich würde GNU vorschlagengrep
Ansatz:
Probe input.txt
:
User\ Name My\ Password
first\ field second\ field
Schneiden Sie das 2. Feld aus2-spaltigDatei:
grep -Po '[^\\]\x20\K.*' input.txt
Die Ausgabe:
My\ Password
second\ field
Oder das gleiche mitsed
:
sed 's/.*[^\\]\x20\(.*\)/\1/' input.txt
----------
Der entscheidende Teil des Regex-Musters ist, [^\\]\x20
dass es mit einem Leerzeichen \x20
(Hexadezimalcode für Leerzeichen) übereinstimmt, wenn ihm ein beliebiges Zeichen vorangestellt ist, außer dem maskierenden Backslash[^\\]