Não é necessário usar um grep (talvez para problemas de desempenho em grandes informações, mas não acho que esse seja o caso com dados armazenados em uma variável)
BMC="$(echo "${allnow}" | sed -e '/iBMC=[0-9]/!d' -e 's/iBMC=//;q' )"
Eu tenho uma variável com, entre outras, uma linha que se parece com isso
iBMC=277
Estou tentando combinar isso assim:
BMC="$(echo "$allnow" | grep iBMC=[0-9] | sed 's/iBMC=//g')"
Isso torna o BMC vazio. Aqui está o que parece em bash -x
:
++ grep 'iBMC=[0-9] '
++ sed s/iBMC=//g
+ BMC=
Eu também tenho que combinar mais coisas, como nesta linha:
Name="$(echo "$allnow" | grep stringName= | sed 's/stringName=//g')"
Mas também está vazio. Aqui está o $allnow
:
QQ1=0999999
QQ2=00aaaaa
RR=yes
GG=no
stringName=skolan8
sTitle=
iBMC=277
L3-cache="8 MB"
Minne="16 GB"
Não é necessário usar um grep (talvez para problemas de desempenho em grandes informações, mas não acho que esse seja o caso com dados armazenados em uma variável)
BMC="$(echo "${allnow}" | sed -e '/iBMC=[0-9]/!d' -e 's/iBMC=//;q' )"
Eu gosto da resposta do @NeronLeVelu, mas fico desconfiada quando vejo o mesmo ou quase o mesmo regex em dois lugares em um script sed
. ;)
Com certeza, pode ser simplificado:
sed -n 's/iBMC=//;T;/^[0-9]/p'
Ou, se estiver usando o BSD sed
, onde não há T
, você pode usar a solução alternativa desleixada:
sed -n -e 's/iBMC=//;ta' -e 'b' -e ':a' -e '/^[0-9]/p'
Por outro lado, poderíamos simplificar a coisa toda:
sed -n 's/iBMC=\([0-9]\)//p'
que é exatamente o mesmo tamanho da minha primeira versão, mas portável para o BSD sed
.
Portanto, envolva isso assim:
BMC="$(echo "$allnow" | sed -n 's/^iBMC=\([0-9]\)//p')"
Name="$(echo "$allnow" | sed -n 's/^stringName=//p')"
O "espaço" após ]
não era realmente um espaço, mas ¬†
. Parecia o mesmo no BBEdit, mas depois de abri-lo com o HexFiend, ele me mostrou esse personagem. Existe algum atalho no BBEdit que faz  
em vez de espaço.
<<IN \
grep '^iBMC=[0-9]\|^stringName=' |\
sed 's/^[[:lower:]]*//'
$allnow
IN
Você também pode querer verificar seu arquivo para fins de linha limpos, mas eu não sei sobre isso.