Aspas simples ''
mean, "use esta string exata". Eles não substituem nomes de variáveis por seus valores. Então é por isso que você precisa escrever manualmente em 995
. Isso ajuda?
Eu quero poder imprimir o número de linhas do bash como tal: Número da linha (como contado a partir do topo) - > fim do arquivo
Parece que a cauda contará apenas as linhas da parte inferior.
Alguém sabe como fazer isso? Obrigado.
Eu tentei o seguinte
# Where $1 is the file I'm reading in
# Get line number of error:
LINENUM=$( grep -n "$LAST_ERROR_DATE" $1 | egrep $LOG_THRESHOLD | grep $LAST_HOUR: | sed 's/:/ /g' | awk '{print $1}' | head -n 1 )
echo $LINENUM
# This returns 995
# Print everything from linenumber downwards
MESSAGE=$( awk 'NR >= $LINENUM' $1 )
Isso funciona quando eu manualmente coloco 995 no awk ao invés de $ LINENUM, ele não parece ler na minha variável bash. Alguma idéia?
Use tail -n +X filename
para imprimir da Xth Line até o final do arquivo.
Use sed -n 'N,$p' filename
para imprimir da enésima linha até o final do arquivo.
MESSAGE=$( awk -v linenum=$LINENUM 'NR >= linenum' $1 )
alternativo:
line=10
file=/path/to/file
sed -n $line,\$p $file
Tags bash awk sed unix-shell