Substituir linha

1. Substituir linha

jose paulo flores
josepaulo

(usa Linux Mint)

Enviado em 28/05/2017 - 13:43h

Olá estou com a seguinte linha:

tdef 65 linear 00Z26may2017 6hr em um arquivo fnl.ctl

gostaria de substituir toda essa linha (q a qual corresponde a linha 13 do meu arquivo) para a linha com a data atual e ano atual sem precisar criar outro arquivo, para isso tentei:

ano=$(date +%Y)
echo $ano
mes=$(date +%m)
echo $mes
saida=$(date +%d)
echo $dia
sed -i '13s/.*/tdef 65 linear 00Z${dia}may${ano} 6hr/ fnl.ctl'

No entanto, quando executo o script, ele substitui exatamente pelo oque eu escrevi e não pelos valores que eu armazenei nas variaveis.

Outra coisa é, como eu armanezo na variável mes o mes atual porém escrito da forma por extenso. Por exemplo, no codigo acima é armazenado o valor 05, gostaria que fosse mai ou may.

Alguem poderia me ajudar?

Obrigado


  


2. Re: Substituir linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/05/2017 - 14:13h


josepaulo escreveu:

Olá estou com a seguinte linha:

tdef 65 linear 00Z26may2017 6hr em um arquivo fnl.ctl

gostaria de substituir toda essa linha (q a qual corresponde a linha 13 do meu arquivo) para a linha com a data atual e ano atual sem precisar criar outro arquivo, para isso tentei:

ano=$(date +%Y)
echo $ano
mes=$(date +%m)
echo $mes
saida=$(date +%d)
echo $dia
sed -i '13s/.*/tdef 65 linear 00Z${dia}may${ano} 6hr/ fnl.ctl'

No entanto, quando executo o script, ele substitui exatamente pelo oque eu escrevi e não pelos valores que eu armazenei nas variaveis.

Outra coisa é, como eu armanezo na variável mes o mes atual porém escrito da forma por extenso.
Por exemplo, no codigo acima é armazenado o valor 05, gostaria que fosse mai ou may.

Alguem poderia me ajudar?

Obrigado


Boa tarde Jose Paulo.
Segue a ajuda . . .
sed -i"13s/.*/$(date +%x)/"  ARQUIVO.txt 

Para "ver" as possibilidades de saida do comando "date",
date --help

Att.:
marcelo oliver




3. Re: Substituir linha

jose paulo flores
josepaulo

(usa Linux Mint)

Enviado em 28/05/2017 - 14:22h

msoliver escreveu:


josepaulo escreveu:

Olá estou com a seguinte linha:

tdef 65 linear 00Z26may2017 6hr em um arquivo fnl.ctl

gostaria de substituir toda essa linha (q a qual corresponde a linha 13 do meu arquivo) para a linha com a data atual e ano atual sem precisar criar outro arquivo, para isso tentei:

ano=$(date +%Y)
echo $ano
mes=$(date +%m)
echo $mes
saida=$(date +%d)
echo $dia
sed -i '13s/.*/tdef 65 linear 00Z${dia}may${ano} 6hr/ fnl.ctl'

No entanto, quando executo o script, ele substitui exatamente pelo oque eu escrevi e não pelos valores que eu armazenei nas variaveis.

Outra coisa é, como eu armanezo na variável mes o mes atual porém escrito da forma por extenso.
Por exemplo, no codigo acima é armazenado o valor 05, gostaria que fosse mai ou may.

Alguem poderia me ajudar?

Obrigado


Boa tarde Jose Paulo.
Segue a ajuda . . .
sed -i"13s/.*/$(date +%x)/"  ARQUIVO.txt 

Para "ver" as possibilidades de saida do comando "date",
date --help

Att.:
marcelo oliver



Olá Marcelo, obg pela ajuda, mas ainda não está funcionando, tentei o seguinte:

$ sed -i "13s/.*/$(date +%x)/" fnl.ctl
sed: -e expressão #1, caractere 13: opção desconhecida para o comando `s' (s///?)








4. Re: Substituir linha

Marcelo Oliver
msoliver

(usa Debian)

Enviado em 28/05/2017 - 17:11h

josepaulo escreveu:

msoliver escreveu:


josepaulo escreveu:

Olá estou com a seguinte linha:

tdef 65 linear 00Z26may2017 6hr em um arquivo fnl.ctl

gostaria de substituir toda essa linha (q a qual corresponde a linha 13 do meu arquivo) para a linha com a data atual e ano atual sem precisar criar outro arquivo, para isso tentei:

ano=$(date +%Y)
echo $ano
mes=$(date +%m)
echo $mes
saida=$(date +%d)
echo $dia
sed -i '13s/.*/tdef 65 linear 00Z${dia}may${ano} 6hr/ fnl.ctl'

No entanto, quando executo o script, ele substitui exatamente pelo oque eu escrevi e não pelos valores que eu armazenei nas variaveis.

Outra coisa é, como eu armanezo na variável mes o mes atual porém escrito da forma por extenso.
Por exemplo, no codigo acima é armazenado o valor 05, gostaria que fosse mai ou may.

Alguem poderia me ajudar?

Obrigado


Boa tarde Jose Paulo.
Segue a ajuda . . .
sed -i"13s/.*/$(date +%x)/"  ARQUIVO.txt 

Para "ver" as possibilidades de saida do comando "date",
date --help

Att.:
marcelo oliver



Olá Marcelo, obg pela ajuda, mas ainda não está funcionando, tentei o seguinte:

$ sed -i "13s/.*/$(date +%x)/" fnl.ctl
sed: -e expressão #1, caractere 13: opção desconhecida para o comando `s' (s///?)


Boa tarde.
Aqui no Debian funciona . . .
Qual distribuição vc utiliza?
Veja:
cat LINHAS.txt
LINHA_01
LINHA_02
LINHA_03
.
.
.
sed "13s/.*/$(date +%x)/" LINHAS.txt  

LINHA_01
. . .
LINHA_10
LINHA_11
LINHA_12
28-05-2017
LINHA_14
. . .

Tente o seguinte:
DT=$(date +%x)
sed "13s/.*/$DT/" LINHAS.txt 


marcelo oliver






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts