Substituir data pela data atual

3

Eu tenho um arquivo abc.fil cujo conteúdo está no formato yyyymmdd.xyz.doc . Eu quero cat esse arquivo abc.fil tal que eu recebo a saída como 20150127.xyz.doc . Alguém por favor pode me ajudar a resolver esse problema?

Arquivo de amostra:

$ cat abc.fil
o/p: yyyymmdd.xyz.doc
yyyymmdd.mno.dat
abc.txt

Saída esperada: em vez de yyyymmdd , quero que a data atual seja exibida na mesma ordem.

    
por user2818015 27.01.2015 / 10:11

3 respostas

2

> today=$(date +%Y%m%d)
> sed "s/yyyymmdd/${today}/g" abc.fil
o/p: 20150127.xyz.doc
20150127.mno.dat
abc.txt
    
por 27.01.2015 / 10:27
2

Você pode usar sed :

sed "s/yyyymmdd/$(date '+%Y%m%d')/g" abc.fil

Substitui a string yyyymmdd pela data atual formatada como desejado.

Editar:

Se yyyymmdd for apenas o formato da data que você deseja substituir, use esse comando (assume o GNU sed ):

sed -r "s/[12][0-9]{3}[01][0-9][0-3][0-9]/$(date '+%Y%m%d')/g" abc.fil

O padrão de expressão regular longa significa o seguinte: O primeiro dígito pode ser 1 ou 2 ( [12] ), os próximos três podem ser tudo de 0 a 9 ( [0-9] ), esse é o ano. Agora o mês: o primeiro dígito pode ser 0 ou 1 e o segundo pode ser tudo de 0 a 9 ( [01][0-9] ). E finalmente o mesmo com o dia.

    
por 27.01.2015 / 10:28
1

tente

cat abc.fil | sed s/yyyymmdd/'date +%Y%m%d'/
    
por 27.01.2015 / 10:26