Awk de string seguido por '\ n'

0

Eu tento analisar um arquivo de configuração de texto simples A.conf com o seguinte conteúdo:

bitrate 500000
use_can 1

Eu quero usar o número atrás de bitrate para configurar uma interface CAN com a taxa de bits apropriada. Aqui está a parte correspondente do meu script de shell:

bitrate="$(cat /home/pi/A.conf | grep 'bitrate' | awk '{print $2}')"
sudo /sbin/ip link set can0 up type can bitrate $bitrate

Funciona bem, se houver pelo menos um caractere de espaço vazio após o número 500000 , mas não se for imediatamente seguido por uma nova linha. Nesse caso, recebo essa saída de erro:

" is wrong: invalid "bitrate" value

Qual é o motivo desse comportamento e como posso corrigi-lo? Eu não quero confiar no fato de que cada arquivo de configuração precisa de caracteres de espaço vazio antes de cada nova linha.

    
por oh.dae.su 13.08.2018 / 11:58

1 resposta

3

Seu arquivo de entrada aparentemente contém um retorno de carro do DOS (ctrl-M, octal 5 ). A solução sã não é usar um editor do Windows em primeiro lugar; uma solução razoável é remover explicitamente esse caractere.

bitrate="$(tr -d '5' < /home/pi/A.conf | awk '/bitrate/ {print $2}')"

Observe também como isso acaba com os cat e os grep inúteis.

    
por 13.08.2018 / 12:06