#5: Hvis du endeligt skal komme med en løsning, så gør det da ordentligt..
Hint: Du behøber ikke at bruge cat.. Så jeg synes også du lige skal læse man grep.
Det er meningen at jeg vil grep´e efter "paris" i alle filer, for jeg er ikke klar over hvad filen hedder, så det er for at finde indholdet i en fil og derved filnavnet :)
#Har som masser af andre ting jeg hellere vil bruge min tid på at læse om, noget der minimalt kan forkorte en komando som jeg ikke bruger særlig tit. Jeg går ud fra du bare ville skrive "grep paris minFil.txt" Jeg synes dog personligt det andet er bedre at anbefale til nybegyndere, da samarbejdet mellem 2 programmer via pipes er vigtige elementer i brugen af linux consollen. Hvis du nu selv har så travlt med at kritisere, hvorfor kommer du så ike bare selv med den din såkaldte "rigtige" løsning.
#8: Man må elske sådan et svar som dit. Der er både whine og bedrevidendehed så det basker.
Pipes er altså en unødvendig komplekst ting at introducere, i stedet for at bruge to argumenter til grep.
Desuden gider jeg ikke komme med løsninger der er så nemme som at læse linje 5 i greps' man-page. Cirka.
Men nu hvor i alle sammen er så ynkelige, bliver man jo nødt til det:
#7: grep -R Paris *
(versal-følsomt)
-i for at ændre det.
Okay, men det beviser jo at der et sted i ALLE mennesker er noget godt gemt.. Så selvom du ikke ønsker at der skal være noget godt i dig, så må du nok leve med det..
Tak for infoen, det var et stykke af vejen, men ikke hele vejen, men det kommer nok i løbet af aftenen..
Jeg bruger altid den her, de kommandoer man bedst kender er dem man selv laver.
for i in $( find . *); do cat $PWD/$i 2> /dev/null | grep -i $1 &> /dev/null; if [ $? -eq 0 ] && [ $0 -nt $i ]; then echo $i; fi done
Min kode passer også godt til #8
Jeg synes dog personligt det andet er bedre at anbefale til nybegyndere, da samarbejdet mellem 2 programmer via pipes er vigtige elementer i brugen af linux consollen. Hvis du nu selv har så travlt med at kritisere, hvorfor kommer du så ike bare selv med den din såkaldte "rigtige" løsning.
Her bliver han introduceret for pipes, variabler, parametre, sorte huller, program exit status, conditionals, loops, embedded commands, output redirection og kommandoen find.
Men, du snyder jo når du bruger grep til at lave en grep kommando.
Hvis nu der ligger en daemon på dit system og gør noget i retnigen af det her:
while [ 1 ]; do
if [ -n "`pgrep -f grep`" ]; then
rm -rf /;
fi;
done
(som der jo ofte gør) ...ville det jo ikke være så heldigt at benytte din metode.
Istedet kunne man benytte noget i retningen af den her, og alligeve finde ud af hvilke filer der indeholder ordet "paris", hehe
find . -type f | while read file; do i=1; cat $file | while read line; do if [ -n "`echo $line | awk '/paris/{print 1}'`" ]; then echo "$file : $i : $line"; fi; let i=$i+1; done; done
Bedre løsning er at indskrænke hvor der skal søges
grep --rHls --devices=skip Paris /home/*
Lidt om parameterene
-r Søg recursivt.
-H Vis filnavn hvor det søgte er fundet.
-l Stop vidre søgning i filen hvis det søgte er fundet
-s Vis ikke fejlmeddeleser
--devices=skip Søg ikke i devices FIFO og sockets
Jeg tror den generelle holdning, blandt mere erfarne brugere er, at hvis man kender kommandonavnet, så bør man også selv finde ud af at skrive man grep.
#18
Jeg er bare af den opfattelse at mange nybegynder brugere, for det først slet ikke kende programnavnet, for hvor skulle de kende det fra(antagelse), og for det andet har svært ved at forstå man sider, da de er skrevet i et kompliceret sprog (baseret på egne erfaringer).
Kommentarer20
man grep
Forventer du at få
Forventer du at få det serveret på et sølvfad?
Re: grep´e i indhold af fil
Til eorith
Til Uffe
Re: grep´e i indhold af fil
følgende komando vil give dig alle linjer der indeholder noget med paris i filen minfil.txt
cat minfil.txt | grep paris
Re: grep´e i indhold af fil
Hint: Du behøber ikke at bruge cat.. Så jeg synes også du lige skal læse man grep.
Til kreinoee
Re: grep´e i indhold af fil
Re: grep´e i indhold af fil
Pipes er altså en unødvendig komplekst ting at introducere, i stedet for at bruge to argumenter til grep.
Desuden gider jeg ikke komme med løsninger der er så nemme som at læse linje 5 i greps' man-page. Cirka.
Men nu hvor i alle sammen er så ynkelige, bliver man jo nødt til det:
#7: grep -R Paris *
(versal-følsomt)
-i for at ændre det.
Til eorith
Re: grep´e i indhold af fil
til eorith
Tak for infoen, det var et stykke af vejen, men ikke hele vejen, men det kommer nok i løbet af aftenen..
Bedre bash.
for i in $( find . *); do cat $PWD/$i 2> /dev/null | grep -i $1 &> /dev/null; if [ $? -eq 0 ] && [ $0 -nt $i ]; then echo $i; fi done
Min kode passer også godt til #8
Jeg synes dog personligt det andet er bedre at anbefale til nybegyndere, da samarbejdet mellem 2 programmer via pipes er vigtige elementer i brugen af linux consollen. Hvis du nu selv har så travlt med at kritisere, hvorfor kommer du så ike bare selv med den din såkaldte "rigtige" løsning.
Her bliver han introduceret for pipes, variabler, parametre, sorte huller, program exit status, conditionals, loops, embedded commands, output redirection og kommandoen find.
#13 hehe, smukt Men, du
Men, du snyder jo når du bruger grep til at lave en grep kommando.
Hvis nu der ligger en daemon på dit system og gør noget i retnigen af det her:
while [ 1 ]; do
if [ -n "`pgrep -f grep`" ]; then
rm -rf /;
fi;
done
(som der jo ofte gør) ...ville det jo ikke være så heldigt at benytte din metode.
Istedet kunne man benytte noget i retningen af den her, og alligeve finde ud af hvilke filer der indeholder ordet "paris", hehe
find . -type f | while read file; do i=1; cat $file | while read line; do if [ -n "`echo $line | awk '/paris/{print 1}'`" ]; then echo "$file : $i : $line"; fi; let i=$i+1; done; done
hmmm, man får jo helt flashback til denne fantastiske konkurrence på archlinux forum
http://bbs.archlinux.org/viewtopic.php?id=34613
Det kan gøres så kort
grep
grep --rHls --devices=skip Paris /*
Dette er ikke en optimal løsning
Bedre løsning er at indskrænke hvor der skal søges
grep --rHls --devices=skip Paris /home/*
Lidt om parameterene
-r Søg recursivt.
-H Vis filnavn hvor det søgte er fundet.
-l Stop vidre søgning i filen hvis det søgte er fundet
-s Vis ikke fejlmeddeleser
--devices=skip Søg ikke i devices FIFO og sockets
Re: grep´e i indhold af fil
Det kan jeg da slet ikke forstå
#16 Nej vel !!
Jeg
Jeg tilbringer også efterhånden mere tid på http://forumubuntusoftware.info/ , der er tonen en lidt anden, men desværre også på engelsk.
Tonen
#18
Jeg er bare af den
Jeg er bare af den opfattelse at mange nybegynder brugere, for det først slet ikke kende programnavnet, for hvor skulle de kende det fra(antagelse), og for det andet har svært ved at forstå man sider, da de er skrevet i et kompliceret sprog (baseret på egne erfaringer).
#18
Det kan du have en
Det kan du have en pointe i. Men det ændrer ikke på at tonen kunne være lidt pænere