> today=$(date +%Y%m%d)
> sed "s/yyyymmdd/${today}/g" abc.fil
o/p: 20150127.xyz.doc
20150127.mno.dat
abc.txt
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.
> today=$(date +%Y%m%d)
> sed "s/yyyymmdd/${today}/g" abc.fil
o/p: 20150127.xyz.doc
20150127.mno.dat
abc.txt
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.
tente
cat abc.fil | sed s/yyyymmdd/'date +%Y%m%d'/
Tags text-processing date