Wenn Sie den Teil der Zeile, den Sie nicht abschneiden, nicht neu formatieren wollen, ist die beste Lösung, die mir einfällt, in meiner Antwort in:
Wie drucke ich alle Spalten nach einer bestimmten Zahl mit awk?
Es schneidet den Teil vor der angegebenen Feldnummer N ab und druckt den Rest der Zeile, einschließlich der Feldnummer N und unter Beibehaltung der ursprünglichen Abstände (es wird nicht neu formatiert). Es spielt keine Rolle, ob die Zeichenfolge des Feldes auch an anderer Stelle in der Zeile erscheint.
Definieren Sie eine Funktion:
fromField () {
awk -v m="\x01" -v N="$1" '{$N=m$N; print substr($0,index($0,m)+1)}'
}
Und verwenden Sie es so:
$ echo " bat bi iru lau bost " | fromField 3
iru lau bost
$ echo " bat bi iru lau bost " | fromField 2
bi iru lau bost
Die Ausgabe behält alles bei, einschließlich nachfolgender Leerzeichen
In Ihrem speziellen Fall:
svn status | grep '\!' | fromField 2 > removedProjs
Wenn Ihre Datei/ihr Stream keine Zeilenumbrüche in der Mitte der Zeilen enthält (Sie könnten ein anderes Satztrennzeichen verwenden), können Sie es verwenden:
awk -v m="\x0a" -v N="3" '{$N=m$N ;print substr($0, index($0,m)+1)}'
Der erste Fall schlägt nur bei Dateien/Streams fehl, die die seltene hexadezimale Zeichennummer 1 enthalten