Você pode tentar analisar a saída do seu programa com sed
e executar os comandos:
$(./YOUR_PROGRAM | sed s/^.*==/rm/ | sed s/\ \(.*//)
será executado (do seu exemplo)
rm new_GS_calculation/selected/POSCAR_0011
rm new_GS_calculation/selected/POSCAR_0022
rm new_GS_calculation/selected/POSCAR_0027
rm new_GS_calculation/selected/POSCAR_0027
rm new_GS_calculation/selected/POSCAR_0037
sed
funciona com a seguinte sintaxe:
sed s/string1/string2/
que substitui string1
por string2
.
O que está acontecendo aqui é:
- a saída do seu programa é enviada para
sed
com o primeiro canal|
- para cada linha de saída,
sed
desde o início (marcado por^
) para o sinal==
e o substitui pelas letrasrm
. isto envia o resto da linha para outra chamadased
com um segundo cano -
sed
agora procura e remove um espaço seguido por uma esquerda parênteses, denotado por\ \(
, e qualquer coisa que se segue, denotada por.*
. - o comando inteiro é empacotado em
$(...)
, então o bash executa o saída, que neste caso, uma string derm new_GS_calculation/...
comandos.