cant não reconhecerá números quando forem passados como variáveis

0

Esta expressão:

FN=27
LN=145
cat $FILENAME | sed -n $FN,$LNp

está falhando com este erro: "sed: -e expressão # 1, char 3: inesperado ','" mas quando eu usei números reais, obtive os resultados esperados. Não há caracteres especiais incorporados, nem espaços à direita ou à esquerda

cat $FILENAME | sed -n 27,145p

O que está acontecendo aqui?

    
por C0ppert0p 12.10.2016 / 00:02

1 resposta

5

A menos que a variável $LNp esteja definida, o comando sed será (supondo um valor padrão do IFS como você esqueceu de citar sua variável):

sed -n 27,

Aqui, você quer:

sed -n "$FN,${LN}p" < "$FILENAME"

Para informar ao shell, o p não faz parte do nome da variável ( sed -n "$FN,$LN"p também funcionaria).

Ou de forma mais eficiente para informar sed para parar assim que a linha $LN th for encontrada:

sed "$FN,\$!d;${LN}q" < "$FILENAME"

ou

tail -n "+$FN" < "$FILENAME" | head -n "$((LN - FN + 1))"
    
por 12.10.2016 / 00:07

Tags