Extrair uma data de um nome de arquivo para script CSH?

Extrair uma data de um nome de arquivo para script CSH?

Estou tentando escrever um script CSH que examinará os componentes do nome do arquivo para gerar uma data/hora. O problema é que não tenho ideia de como extrair parte de um nome de arquivo para usá-lo. Aqui está um exemplo de nome de arquivo:

nam_218_20140126_1800_001.grb  

20140126é a parte da data do nome do arquivo e 1800é a hora. Preciso extraí-lo e convertê-lo 2014-01-26_18:00:00para uso em uma variável de ambiente. Alguma dica?

Obrigado

Responder1

% set filename='nam_218_20140126_1800_001.grb' 
% set datetime=`echo "$filename" | sed -r 's/.*_([0-9]{4})([0-9]{2})([0-9]{2})_([0-9]{2})([0-9]{2}).*/\1-\2-\3_\4:\5:00/'`
% echo $datetime
2014-01-26_18:00:00

Responder2

Usar echoe cut. Leia man cute faça algo como:

$ csh
aardvark:~% set zz="nam_218_20140126_1800_001.grb"
aardvark:~% set y=`echo $zz|cut -c9-12`
aardvark:~% echo $y
2014
aardvark:~% set m=`echo $zz| cut -c13-14`
aardvark:~% echo $m
01
aardvark:~% set d=`echo $zz| cut -c15-16`
aardvark:~% echo $d
26
aardvark:~% set H=`echo $zz | cut -c18-19`
aardvark:~% echo $H
18
aardvark:~% set M=`echo $zz | cut -c20-21`
aardvark:~% echo $M
00
aardvark:~% echo "$y-$m-${d}_${H}:${M}:00"
2014-01-26_18:00:00  

Não é uma cshresposta específica.

informação relacionada