Entfernen Sie das letzte Zeichen vor einem anderen Zeichen

Entfernen Sie das letzte Zeichen vor einem anderen Zeichen

Ich habe eine Frage zu dem sedBefehl. Ist es möglich, ein Zeichen (oder eine Gruppe von Zeichen) zwischen einem Leerzeichen und einem ausgewählten Zeichen zu entfernen? Wenn ich eine Liste mit mehreren Textzeilen habe, wie zum Beispiel:

a = 5 * x + 3 n\exit>

a = 5 * x + 7 abndc\exit>

… usw. usw.

zu bekommen

a = 5 * x + 3

a = 5 * x + 7

usw. usw.

Befehl verwenden sed?

Entfernen Sie also grundsätzlich alles aus dem Raum 3nach>

Antwort1

2 Ansätze

  1. alles bis zum letzten Leerzeichen beibehalten:

    sed 's/\(.*\) .*/\1/'
    
  2. Suchen Sie am Ende der Zeile nach einem Leerzeichen und einigen Nicht-Leerzeichen und entfernen Sie diese

    sed 's/ [^ ]*$//'
    

Antwort2

sed -r 's/(.*)( \S+>)/\1/' file

a = 5 * x + 3
a = 5 * x + 7

verwandte Informationen