Cuando grep la página de manual del comando find para coincide con type devuelve muchos resultados de búsqueda que no quiero. En su lugar, quiero usar un comando que devuelva solo los resultados de búsqueda para -type.

El comando man find | grep -type no «funciona. Devuelve:

grep: invalid option -- "t" 

Comentarios

  • ¿Desea solo las líneas individuales de la página de manual formateada? que contienen la cadena -type, o quieres, digamos, el párrafo completo o dos que describen lo que -type hace?
  • Quiero saber cómo hacerlo en ambos sentidos, grepping para las líneas individuales que contienen la cadena -type sería suficiente para la forma en que suelo buscar en las páginas de manual, sin embargo, devolver el párrafo completo o dos que describen lo que -type hace sería muy útil para hacerlo al menos una vez.
  • Por cierto, si ver una página web es una alternativa, Idan Kamara de explicahell.com ha hecho un gran trabajo al extraer las partes de las páginas de manual que describen las opciones de comando. Consulte, por ejemplo, explicahell.com/explain?cmd=find+-type+f para ver qué -type lo hace.

Responder

Si desea grep para un patrón que comienza con un guión, use -- antes del patrón que especifique.

man find | grep -- -type 

Si desea más información, por ejemplo, toda la sección que describe una opción , podría intentar usar Sed:

$ man find | sed -n "/-mindepth/,/^$/p" -mindepth levels Do not apply any tests or actions at levels less than levels (a non-negative integer). -mindepth 1 means process all files except the command line arguments. 

Sin embargo, esto no funcionará para todas las opciones que pueda buscar. Por ejemplo :

$ man find | sed -n "/^[[:space:]]*-type/,/^$/p" -type c File is of type c: 

No es muy útil. Peor aún, para algunas opciones podría ser engañado y pensar que «leería todo el texto sobre la opción cuando realmente no lo había hecho». t. Por ejemplo, al buscar -delete se omite la ADVERTENCIA muy importante contenida como un segundo párrafo bajo ese encabezado.


Mi la recomendación es utilizar una llamada estándar a man con el conjunto de variables de entorno LESS. Lo uso con bastante frecuencia en mis respuestas en este sitio.

LESS="+/^[[:space:]]*-type" man find 

Para obtener más información sobre cómo funciona, consulte:

LESS="+/^[[:space:]]*LESS " man less LESS="+/\+cmd" man less LESS="+/\/" man less 

Si solo desea encontrar la opción de forma rápida e interactiva en la página de manual, aprenda a usar las capacidades de búsqueda de less«. vea también:

Comentarios

  • Gracias por publicar. Los comandos en su respuesta arrojaron los resultados que estaba buscando. Aceptaré una respuesta después de uno o dos días, así que tenga paciencia.
  • @karel, no hay problema, yo ' soy muy paciente. 🙂 Sin embargo, un poco desconcertado: sé que puede ' No inicie una recompensa por una pregunta durante dos días, pero creo que el límite de tiempo antes de que pueda aceptar una respuesta es de solo 15 minutos aproximadamente.
  • man find | sed -n '/-type/,/^$/p' da mucho más de lo que publicaste coincidirá con -type en cualquier parte de la línea … estoy trabajando en un pequeño script para buscar man o help (para builtin) y actualmente estoy usando awk que todavía tiene algunas peculiaridades que resolver .. awk -v RS= -v rx="^\\\s*$arg\\\>" '$0 ~ rx' "$file" donde arg sería -type en este caso
  • Por cierto, @Sundeep, es posible que desee intentar analizar los archivos troff subyacentes que contienen la información de la página de manual original con información de formato, en lugar de la salida de texto del man comando.
  • @Sundeep, aquí ' es el punto de partida para ti . (Asegúrese de seguir el enlace en esa respuesta). Hay ' MUCHO que saber sobre troff. Hazme ping en el chat cuando termines de sumergirte en la madriguera del conejo. 🙂

Responder

O canalizar a less y alimentar que un término de búsqueda:

man 1 find | less -p " -type" 

(Esto puede fallar dependiendo exactamente de qué less es feed, por ejemplo, si -type se ha resaltado en negrita con retrocesos.)

Comentarios

  • Transmitirlo a través de col -bx primero.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *