wc -l file para uma variável [duplicate]

0

Dado um caminho de arquivo, gostaria de descobrir quantas linhas existem e armazená-las em uma variável. Por exemplo:

/three_little_pigs.csv

straw
wood
bricks

Em um arquivo, gostaria de ter o número (ou string 3 ) armazenado. Tentei os seguintes comandos:

export P="three_little_pigs.csv"
NUM_LINES=(wc -l < "${P}")

mas estou sempre recebendo este erro:

bash: house: line 12: syntax error near unexpected token '<'
    
por blackbeelabs 24.07.2017 / 09:10

1 resposta

3

Para executar uma subshell use $(...) no bash. E você não precisa redirecionar a entrada, mas simplesmente nomeie o arquivo de entrada. Então, omita o < :

NUM_LINES=$(wc -l "$P")

Saída:

3 three_little_pigs.csv

Para se livrar do nome do arquivo, uma possibilidade (há muitos outros) é usar o awk:

NUM_LINES=$(wc -l "$P" | awk '{print $1}')

EDIT 1:

OK, usar o redirecionamento ( < ) omitirá o nome do arquivo ... desculpe;)

NUM_LINES=$(wc -l < "$P")
    
por 24.07.2017 / 09:20

Tags