私には道がある:
/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}'
シェルパラメータ拡張を使用して awk を完全に回避することもできます。
$ echo "${a%/*}/"
/home/alejo/Desktop/Proyecto_UIS-MINCIENCIAS/qmmm_propranolol_aescorcia/A_PSF-NUEVO/ORIII/MCC/out/
${parameter%pattern}
シェル変数の値をparameter
、末尾の最短一致を削除しpattern
て返します。例を参照してください。BashGuide: パラメータの拡張
または、単にdirname
コマンドを使用します。