我有一條路:
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/mcc_oriii_after_centering.pdb
我希望有:
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/
我嘗試過的:
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}'
但是,我得到的是:
mcc_oriii_after_centering.pdb
答案1
您可以將該值設為$NF
空字串:
$ 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}
在開始處理之前將輸出欄位分隔符號設定為與輸入欄位分隔符號相同 - 否則輸出將由預設空格而不是斜線分隔。
至少在 GNU awk 中,您可以透過遞減來完全刪除最後一個欄位NF
(儘管這將給出不帶尾部斜線的輸出):
awk -F'/' 'BEGIN{OFS=FS} {NF--; print}'
您也可以使用 shell 參數擴充來完全避免 awk:
$ echo "${a%/*}/"
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/
${parameter%pattern}
傳回 shell 變數的值parameter
,其中最短尾隨匹配pattern
已刪除 - 請參閱範例BashGuide:參數擴展
或直接使用dirname
命令。