Incremento de 1 para trabalhar em todos os shells

0

Estou usando expr para incrementar um número que vem de um arquivo.
Embora os seguintes trabalhos:

NUM=$(expr $(grep customer file.txt | cut -f4 -d' ' | sort -n | tail -n 1) + 1)  

Não tenho certeza se expr está disponível em todos os shells.
Mas o seguinte não funciona:

NUM=$((grep customer file.txt | cut -f4 -d' ' | sort -n | tail -n 1) + 1))                                        

Então, existe uma maneira de fazer o incremento de um modo que funcione para todos os shells?

    
por Jim 16.04.2018 / 10:28

1 resposta

2

Você deseja encontrar o maior número na coluna 4 nas linhas que contêm a palavra customer e atribuir mais um a NUM :

 NUM=$( awk '/customer/ && $4 > n { n = $4 } END { print n + 1 }' file.txt )

expr funcionaria em qualquer shell POSIX (não depende da distribuição do Linux que você usa, na verdade).

Então,

NUM=$(( $( grep ... ) + 1 ))

mas você está usando

NUM=$(( grep ... ) + 1 ))

que tem parênteses desequilibrados.

Eu usaria a variação mais simples de awk .

    
por 16.04.2018 / 10:36