Tentando obter um exemplo do livro Awk e Sed para funcionar no Ubuntu 13.04

Tentando obter um exemplo do livro Awk e Sed para funcionar no Ubuntu 13.04

Tenho desenvolvido software Windows há anos. Estou tentando diversificar e aprender Linux. Isso realmente ajudará no meu novo trabalho.

Peguei o livro "Awk and Sed" 2ª edição. Estou executando o Ubuntu 13.04; trabalhando com a janela do terminal. Estou trabalhando no livro e me deparei com um exemplo que não consigo colocar em prática.

Tenho tentado tudo o que posso encontrar para fazer isso funcionar. Se eu digitar o exemplo sem usar o segundo arquivo de script, ele funcionará conforme o esperado. No entanto, quando tento trabalhar conforme as instruções do livro (ou seja, usando um arquivo de script), recebo o seguinte: "byState: comando não encontrado". O comando que falha é:

sed -f nameState list | byState

Qual é o meu problema?

Aqui está um conjunto de dados: Lista =

John Daggett, 341 King Road, Plymouth MA
Alice Ford, 22 East Broadway, Richmond VA
Orville Thomas, 11345 Oak Bridge Road, Tulsa OK
Terry Kalkas, 402 Lans Road, Beaver Falls PA
Eric Adams, 20 Post Road, Sudbury MA
Hubert Sims, 328A Brook Road, Roanoke VA
Amy Wilde, 334 Bayshore Pkwy, Mountain View CA
Sal Carpenter, 73 6th Street, Boston MA

O primeiro script é: nameState =

s/ CA/, California/
s/ MA/, Massachusetts/
s/ OK/, Oklahoma/
s/ PA/, Pennsylvania/
s/ VA/, Virginia/

O segundo script é: byState =

#! /bin/sh
awk -F, '{ 
    print $4 ", " $0 
    }' $* | 
sort |
awk -F, '
$1 == LastState { 
    print "\t" $2 
}
$1 != LastState { 
    LastState = $1
    print $1 
    print "\t" $2
}'

Responder1

Seu script byStatepode não ser executável.

Tentar:

chmod +x byState

... para tornar o script executável e tente a linha de comando novamente.

Além disso, ou alternativamente, como o Unix não inclui o diretório atual no caminho por padrão, pode ser necessário escrever:

sed -f nameState list | ./byState

... em vez de

sed -f nameState list | byState

Responder2

você pode tentar isso:

sed -f namestate list | sort -k 4 -t ,

informação relacionada