por que o 'awk' falha quando eu o coloco em um script bash

0

no prompt:

ls | awk '{printf("%s\t\t%s\n", $9, $3);}'

consegue imprimir o que deve ser impresso. Se eu colocá-lo em um arquivo, recebo quatro ou cinco linhas vazias (sobre o número de linhas na saída de ls ):

$ cat awk-file-owner-simple 
#!/bin/bash
ls | awk '{printf("%s\t\t%s\n", $9, $3);}'
$ ./awk-file-owner-simple 
_
_
_
_

Onde _ representa linhas vazias (que não podem ser exibidas usando o formatador de código de stackexchange).

    
por Marcus Junius Brutus 20.10.2013 / 22:19

2 respostas

4

Altere ls | para ls -l | .

Você evidentemente aliased ls to ls -l em seu shell (possivelmente uma função e / ou outras opções); use type ls para ver o que você está realmente executando. Os scripts não recebem aliases, por isso está apenas executando o% normalls, com sua única coluna de saída.

    
por 20.10.2013 / 22:26
0

Ou use stat (1) do pacote coreutils.

stat --printf="%-20n %U\n" *
    
por 21.10.2013 / 23:53

Tags