grep 'potato:' file.txt | sed 's/^.*: //'
grepbusca cualquier línea que contenga la cadena potato:, luego, para cada una de estas líneas, sedreemplaza ( s///- sustituye) cualquier carácter ( .*) desde el principio de la línea ( ^) hasta la última aparición de la secuencia :(dos puntos seguidos de un espacio) con el vacío cadena ( s/...//- sustituya la primera parte por la segunda, que está vacía).
o
grep 'potato:' file.txt | cut -d\ -f2
Para cada línea que contiene potato:, cutdividirá la línea en varios campos delimitados por espacio ( -d\- d= delimitador, \= carácter de espacio de escape, algo como -d" "también habría funcionado) e imprimirá el segundo campo de cada una de esas líneas ( -f2).
o
grep 'potato:' file.txt | awk '{print $2}'
Para cada línea que contenga potato:, awkimprimirá el segundo campo ( print $2) que está delimitado por defecto por espacios.
o
grep 'potato:' file.txt | perl -e 'for(<>){s/^.*: //;print}'
Todas las líneas que contienen potato:se envían a un script de Perl en línea ( -e) que toma todas las líneas de , luego, para cada una de estas líneas, hace la misma sustitución que en el primer ejemplo anterior y luego las imprime.stdin
o
awk '{if(/potato:/) print $2}' < file.txt
El archivo se envía vía stdin( < file.txtenvía el contenido del archivo vía stdinal comando de la izquierda) a un awkscript que, para cada línea que contiene potato:( if(/potato:/)devuelve verdadero si la expresión regular /potato:/coincide con la línea actual), imprime el segundo campo, como se describe encima.
o
perl -e 'for(<>){/potato:/ && s/^.*: // && print}' < file.txt
El archivo se envía mediante stdin( < file.txt, ver arriba) a un script Perl que funciona de manera similar al anterior, pero esta vez también se asegura de que cada línea contenga la cadena potato:( /potato:/es una expresión regular que coincide si la línea actual contiene potato:, y, si lo hace ( &&), luego procede a aplicar la expresión regular descrita anteriormente e imprime el resultado).
awk '$1 ~ /potato/ { print $2 }' file.txt.