/tmp/miarchivo
first line text
wanted text
other text
el comando
$ grep -n "wanted text" /tmp/myfile | awk -F ":" '{print $1}'
2
El -n
cambiar a grep antepone cualquier línea coincidente con el número de línea (seguido de :
), mientras que el segundo comando usa dos puntos como separador de columnas (-F ":"
) e imprime la primera columna de cualquier línea. El resultado final es la lista de números de línea con un fósforo.
Además de grep
, también puede usar otras utilidades como awk
o sed
Aquí hay algunos ejemplos. Digamos que desea buscar una cadena is
en el archivo llamado GPL
.
Tu archivo de muestra
[email protected]:~$ cat -n GPL
1 The GNU General Public License is a free, copyleft license for
2 The licenses for most software and other practical works are designed
3 the GNU General Public License is intended to guarantee your freedom to
4 GNU General Public License for most of our software;
[email protected]:~$
[email protected]:~$ grep is GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
[email protected]:~$ awk /is/ GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
[email protected]:~$ sed -n '/is/p' GPL
The GNU General Public License is a free, copyleft license for
the GNU General Public License is intended to guarantee your freedom to
[email protected]:~$
Espero que esto ayude
La familia de comandos grep (incluidos egrep, fgrep) es la solución habitual para esto.
$ grep pattern filename
Si está buscando el código fuente, entonces ack puede ser una mejor opción. Buscará subdirectorios automáticamente y evitará archivos que normalmente no buscaría (objetos, directorios SCM, etc.)
La forma habitual de hacer esto es con grep
, que usa un patrón de expresiones regulares para hacer coincidir las líneas:
grep 'pattern' file
Se emitirá cada línea que coincida con el patrón. Si desea buscar solo cadenas fijas, use grep -F 'pattern' file
. fgrep
es la abreviatura de grep -F
.
También puedes usar sed
:
sed -n '/pattern/p' file
O awk
:
awk '/pattern/' file