
Llevo años desarrollando software para Windows. Estoy intentando expandirme y aprender Linux. Realmente me ayudará con mi nuevo trabajo.
He cogido el libro "Awk and Sed", segunda edición. Estoy ejecutando Ubuntu 13.04; trabajando con la ventana de terminal. Estoy leyendo el libro y me he topado 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 utilizar el segundo archivo de secuencia de comandos, funciona como se esperaba. Sin embargo, cuando intento trabajar según las instrucciones del libro (es decir, usando un archivo de script), aparece lo siguiente: "byState: comando no encontrado". El comando que falla es:
sed -f nameState list | byState
¿Cuál 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
}'
Respuesta1
Es posible que su script byState
no sea ejecutable.
Intentar:
chmod +x byState
... para que el script sea ejecutable, luego intente nuevamente con la línea de comando.
Además, o alternativamente, debido a que Unix no incluye el directorio actual en la ruta de manera predeterminada, es posible que deba escribir:
sed -f nameState list | ./byState
... en lugar de
sed -f nameState list | byState
Respuesta2
podrías probar esto:
sed -f namestate list | sort -k 4 -t ,