Supponiamo che io voglia conoscere l'uso di -i
switch in grep
command senza scorrere. Ho bisogno delle specifiche solo per quel comando o almeno per prima cosa lo schermo lo mostra. Così come? Come puoi dire in generale non solo per grep -i
.
Supponiamo che io voglia conoscere l'uso di -i
switch in grep
command senza scorrere. Ho bisogno delle specifiche solo per quel comando o almeno per prima cosa lo schermo lo mostra. Così come? Come puoi dire in generale non solo per grep -i
.
Risposte:
Prova questo semplice sed
comando,
$ man grep | sed -n '/-i, --ignore-case/,+2p'
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
Spiegazione:
sed -n '/-i, --ignore-case/,+2p'
|<-Search pattern->|
Stampa la linea che contiene il modello di ricerca insieme a 2 linee che si presentano appena sotto alla linea del modello di ricerca.
O
Puoi semplicemente dare solo le bandiere nel patten di ricerca come sotto.
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *i, -/,+3p'
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *V, -/,+3p'
-V, --version
Print the version number of grep to the standard output stream.
This version number should be included in all bug reports (see
below).
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *F, -/,+3p'
-F, --fixed-strings
Interpret PATTERN as a list of fixed strings, separated by
newlines, any of which is to be matched. (-F is specified by
POSIX.)
avinash@avinash-Lenovo-IdeaPad-Z500:~$ man grep | sed -n '/ *G, -/,+3p'
-G, --basic-regexp
Interpret PATTERN as a basic regular expression (BRE, see
below). This is the default.
Puoi aggiungere questo script al tuo .bashrc
( $HOME/.bashrc
) per un rapido accesso:
mangrep(){
USAGE="mangrep <application> <switch>"
if [[ "$#" -ne "2" ]]
then
echo "Usage: $USAGE"
else
man "$1" | sed -n "/ *"$2", -/,+3p"
fi
}
Digitare il comando seguente sul terminale:
man grep
Digita quindi il carattere barra /e scrivi la tua ricerca, come -i
, seguita da Enter. Ciò posizionerà il cursore alla prima occorrenza della stringa di ricerca. Premendo si nsposta il cursore sulla ricorrenza successiva. Premendo Shift+ si nsposta il cursore sulla ricorrenza precedente.
-i
pagina, man grep
ma OP vuole solo la descrizione relativa al -i
flag nella pagina man.
-i
. Questo è esattamente ciò che l'OP vuole.
Mentre l'approccio più semplice è cercare con /come suggerito da @girardengo, puoi anche usare al grep
posto del sed
quale trovo più semplice:
$ man grep | grep -A 1 '^ *-i'
-i, --ignore-case
Ignore case distinctions in both the PATTERN and the input
files. (-i is specified by POSIX.)
I -A N
mezzi "Stampa N righe dopo l'abbinamento uno. Solo un trucco per ottenere le prossime righe, simili a di Avinash sed
approccio.
Puoi usare la funzione di ricerca all'interno man
, basta "s"
premere, digitare il tasto che stai cercando (-i nel tuo caso) e premere intro.
Oppure, puoi consentire a questo sito di effettuare la ricerca per te:
http://explainshell.com/explain?cmd=grep+-i
Devi passare dall'uso del terminale a un browser per un po ', ma ci sono anche modi per aggirare questo .
Il metodo più efficiente di cui sono a conoscenza è la ricerca nella pagina man per -i
(Questo sito sembra non riuscire a rendere il mio codice. Quello che voglio dire è<space><space><space>-i
). Sono 3 spazi (potresti aver bisogno di più / meno spazi) seguiti dalla bandiera che stai cercando. Funziona quasi sempre nella mia esperienza, e puoi cambiarne una variante nei casi in cui non funziona.
Funziona perché la documentazione effettiva delle bandiere è tipicamente rientrata. Evita di trovare altre menzioni della bandiera in altre sezioni, perché di solito c'è solo uno spazio prima di esse.
Attraverso tutte le risposte può andare bene, ma penso che ti stai concentrando solo su un pezzo di documentazione, non su tutti. Ad esempio, per trovare il -i
cambio della documentazione grep:
info grep Invoking Command-line\ Options Matching\ Control
Troverò tutte le informazioni su "grep", come "invocare" le specifiche "opzioni della riga di comando" per "controllo di corrispondenza". Purtroppo non va più profondo di quello, ma ha -i
, -y
, --ignore-case
nei i primi 25 righe, qualcosa di ragionevole che non c'è bisogno di scorrere tutta la tua strada verso il basso.
Questa soluzione è più flessibile e ti consente anche di cercare in tutte le informazioni:
info --apropos=--ignore-case
"(coreutils)join invocation" -- --ignore-case <1>
"(coreutils)uniq invocation" -- --ignore-case <2>
"(coreutils)sort invocation" -- --ignore-case
"(gettext)msggrep Invocation" -- --ignore-case, ‘msggrep’ option
"(grep)Matching Control" -- --ignore-case
(è stato necessario utilizzarlo --ignore-case
anziché -i
perché era troppo comune, ma è possibile elaborare l'output in informazioni in ogni caso)
In questo caso, hai sia il nome della pagina informativa sia la sezione esatta. Ah, quasi dimenticato, puoi anche tabpassare attraverso la maggior parte della sezione delle pagine di informazioni.
Il mio approccio preferito per trovare una determinata opzione in una man
pagina è usare una regex come \s{2,}-option
. Per la domanda in corso, puoi fare man grep
e quindi digitare regex:
/\s{3,}-i
o
/ {3,}-i
^------------- space here
Questo corrisponderà -i
solo se seguito da tre o più spazi.
Come less
viene utilizzato per impostazione predefinita come cercapersone man
, è possibile utilizzare la LESS
variabile di ambiente per passare un modello da cercare quando less
apre la pagina. Questo è identico a fare ad esempio man ls
e quindi cercare l'opzione --all
o -a
digitando /e quindi inserendo il modello ad esempio --all
o -a
.
Tutto ciò può essere fatto da:
LESS='+/--all' man ls
O
LESS='+/-a' man ls
Inserisci ciò che desideri cercare /
.
Presumibilmente funziona meglio per le opzioni lunghe (ad es. --all
) Rispetto a quelle corte (ad es -a
.).
Se si desidera ottenere grep
i man <program>
risultati per un motivo che inizia con un trattino, utilizzare --
prima del motivo specificato. Esempio usando man find
:
man find | grep -- -type
Se vuoi maggiori informazioni, ad esempio l'intera sezione che descrive un'opzione, prova a usare 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.