Мне удалось добиться этого с помощью следующего:
sed 's/ACTIVOS/\&/g' input | sort -n -t \& -k2 | sed 's/\&/ACTIVOS/g'
ACTIVOS
одним символом (, потому что сортировка может использовать только один символ-разделитель ). Это рискованно, если ваш файл может содержать символ &
, но этот символ можно заменить, если вы знаете другой символ, которого точно не будет в вашем вводе. &
)&
обратно наACTIVOS
С вводом образца:
$ cat input
DISTANCIA1.45_SIMETRIA1_GIRO2_ACTIVOS11/MoN-MVW.out::: Total energy:
DISTANCIA1.45_SIMETRIA1_GIRO2_ACTIVOS7/MoN-MVW.out::: Total energy:
DISTANCIA1.45_SIMETRIA1_GIRO2_ACTIVOS9/MoN-MVW.out::: Total energy:
DISTANCIA1.45_SIMETRIA1_GIRO4_ACTIVOS11/MoN-MVW.out::: Total energy:
$ sed 's/ACTIVOS/\&/g' input | sort -n -t \& -k2 | sed 's/\&/ACTIVOS/g'
DISTANCIA1.45_SIMETRIA1_GIRO2_ACTIVOS7/MoN-MVW.out::: Total energy:
DISTANCIA1.45_SIMETRIA1_GIRO2_ACTIVOS9/MoN-MVW.out::: Total energy:
DISTANCIA1.45_SIMETRIA1_GIRO2_ACTIVOS11/MoN-MVW.out::: Total energy:
DISTANCIA1.45_SIMETRIA1_GIRO4_ACTIVOS11/MoN-MVW.out::: Total energy:
на основе вашей команды вы сможете сделать что-то вроде:
grep -R ':: RASSCF root number 1 Total energy:' * | sed 's/ACTIVOS/\&/g' | sort -n -t \& -k2 | sed 's/\&/ACTIVOS/g' > outputCASSCF.txt