Intentando obtener un ejemplo del libro Awk y Sed para trabajar en Ubuntu 13.04

0

He estado desarrollando software de Windows durante años. Estoy tratando de ramificarme y aprender Linux. Realmente me ayudará con mi nuevo trabajo.

Recogí el libro "Awk and Sed" 2nd Edition. Estoy ejecutando Ubuntu 13.04; trabajando con la ventana de terminal. Estoy trabajando en el libro y me he encontrado con un ejemplo que no puedo poner a trabajar.

He estado intentando todo lo que puedo encontrar para que esto funcione. Si escribo el ejemplo sin usar el segundo archivo de script, funciona como se esperaba. Sin embargo, cuando intento trabajar como se indica en el libro (es decir, usando un archivo de script), obtengo lo siguiente: "byState: comando no encontrado". El comando que falla es:

sed -f nameState list | byState

Cual es mi problema

Aquí hay un conjunto de datos: 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

El primer script es: nameState =

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

El segundo script es: 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
}'
usuario246562
fuente

Respuestas:

0

Su script byStatepuede no ser ejecutable.

Tratar:

chmod +x byState

... para hacer que el script sea ejecutable, luego intente su línea de comando nuevamente.

Además, o como alternativa, debido a que Unix no incluye el directorio actual en la ruta de forma predeterminada, es posible que deba escribir:

sed -f nameState list | ./byState

... en vez de

sed -f nameState list | byState
Simon
fuente
Intenté usar el "./byState", ¡y funcionó! Muchas gracias. Debería haber preguntado antes.
user246562
Encantado de ayudar. Si esta respuesta ha resuelto su problema, continúe y verifique la respuesta como aceptada.
Simon
0

podrías probar esto:

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