Ich habe einen Pfad:
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/mcc_oriii_after_centering.pdb
Ich möchte haben:
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/
Was ich versucht habe:
a="/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/mcc_oriii_after_centering.pdb"
echo $a | awk -F'/' '{print $NF}'
Aber was ich bekomme ist:
mcc_oriii_after_centering.pdb
Antwort1
Sie können den Wert $NF
auf eine leere Zeichenfolge setzen:
$ echo "$a" | awk -F'/' 'BEGIN{OFS=FS} {$NF=""; print}'
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/
BEGIN{OFS=FS}
Legt fest, dass der Ausgabefeldtrenner mit dem Eingabefeldtrenner vor Beginn der Verarbeitung übereinstimmt. Andernfalls wird die Ausgabe durch die Standardleerzeichen statt durch Schrägstriche getrennt.
Zumindest in GNU awk könnten Sie stattdessen das letzte Feld durch Dekrementieren vollständig löschen NF
(obwohl dies eine Ausgabe ohne den abschließenden Schrägstrich ergibt):
awk -F'/' 'BEGIN{OFS=FS} {NF--; print}'
Sie können auch die Shell-Parametererweiterung verwenden, um awk vollständig zu vermeiden:
$ echo "${a%/*}/"
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/
${parameter%pattern}
gibt den Wert der Shell-Variable parameter
mit der kürzesten nachfolgenden Übereinstimmung von pattern
entfernt zurück - siehe zum BeispielBashGuide: Parametererweiterung
Oder verwenden Sie einfach den dirname
Befehl.