Kirjoittaja Aihe: Greppailua päin mäntyä; haluaisin nähdä vain matchit ja rivinumerot  (Luettu 7681 kertaa)

JA5U

  • Käyttäjä
  • Viestejä: 463
    • Profiili
Moi

Huoh. Haluaisin grepillä löytää kaikki matchit kaikista tiedostoista.
Kotona onnistuu hyvin, mutta töissä ei.

Käytän simppeliä:
Koodia: [Valitse]
grep -rnw "mjono"Mielestäni tuolla olen yleensä saanut varsin hyviä tuloksia.
Töissä se tuuttaa kuitenkin vaan tiedostojen sisällöt Matrix tyyliin ruudulle.

Missä vika on? Minussa?Koneessa?
Löytyykö grepille joku vastaava työkalu?

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Grepistä on olemassa erilaisia versioita, jotka tottelevat eri vipuja. Mikä käyttöjärjestelmä/jakelu siellä töissä on käytössä? Mikä grep:

Koodia: [Valitse]
grep --version

AimoE

  • Käyttäjä
  • Viestejä: 2782
    • Profiili
Voisi myös tarkistaa onko grepille tehty alias.

Koodia: [Valitse]
alias grep

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Mitä meinaa matrix tyyli? (En ole kattonut matrixia aikoihin, pitäisiköhän verestää muistia?)

Tuo -r vipstaaki tekee haun rekursiivisesti, joten tulostus voi olla melkoista sekamelskaa kun työhakemiston alla on laaja monitasoinen hakemistopuu ja paljon tiedostoja.

Jos käytät pääteyhteyttä tai esim. cygwiniä windowsissa ja locale on jotenkin viturallaan, näytölle voi tulostua hassuja merkkejä.

JA5U

  • Käyttäjä
  • Viestejä: 463
    • Profiili
Mitä meinaa matrix tyyli? (En ole kattonut matrixia aikoihin, pitäisiköhän verestää muistia?)

Tuo -r vipstaaki tekee haun rekursiivisesti, joten tulostus voi olla melkoista sekamelskaa kun työhakemiston alla on laaja monitasoinen hakemistopuu ja paljon tiedostoja.

Jos käytät pääteyhteyttä tai esim. cygwiniä windowsissa ja locale on jotenkin viturallaan, näytölle voi tulostua hassuja merkkejä.
Normaalisti se tulee siis matchit siististi rivitettynä ja nyt vaan kaikki tiedostojen sisältö yhteen pötköön "matrix" tyyliin.

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
Normaalisti se tulee siis matchit siististi rivitettynä ja nyt vaan kaikki tiedostojen sisältö yhteen pötköön "matrix" tyyliin.

Onko niissä tiedostoissa rivinvaihtoja? Jos ei, niin silloinhan grep luonnollisesti listaa koko sisällön match-riviä esittäessään.

Kokeile grepata merkkijonoa samasta tekstitiedostosta kotona ja töissä, jos epäilet vilunkipeliä.  ;) Tai paljasta jotain käyttöjärjestelmästä, niin on mahdollista arvata, mikä muu siellä voi olla pielessä.
« Viimeksi muokattu: 18.10.16 - klo:15.36 kirjoittanut nm »

JA5U

  • Käyttäjä
  • Viestejä: 463
    • Profiili
Normaalisti se tulee siis matchit siististi rivitettynä ja nyt vaan kaikki tiedostojen sisältö yhteen pötköön "matrix" tyyliin.

Onko niissä tiedostoissa rivinvaihtoja? Jos ei, niin silloinhan grep luonnollisesti listaa koko sisällön match-riviä esittäessään.

Kokeile grepata merkkijonoa samasta tekstitiedostosta kotona ja töissä, jos epäilet vilunkipeliä.  ;) Tai paljasta jotain käyttöjärjestelmästä, niin on mahdollista arvata, mikä muu siellä voi olla pielessä.
Kyseessä on siis CMS/js,php,html koodia. Puttyllä kiinni ao. palvelimessa.

Koodia: [Valitse]
Linux version 2.6.32-673.8.1.lve1.4.3.1.el6.x86_64 (mockbuild@build.cloudlinux.com) (gcc version 4.4.7 20120313 (Red Hat 4.4.7-16) (GCC) ) #1 SMP Thu May 5 16:06:47 EDT 2016


retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Onko ne tiedostot luotu windowsissa? Jos ne siirretty palvelimelle ftp:llä binary moodissa, niissä voi olla dos-tyyliset rivinvaihdot.

Tosin grepin ei kai silti pitäisi seota niihin.

Hieman asian vierestä, kyselit grepille vaihtoehtoa ja kun kerran sorsia kaivelet yksi sellainen voisi olla ack:
https://linux.die.net/man/1/ack
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-ack-a-grep-replacement-for-developers-on-ubuntu-14-04

On monissa asioissa astetta viksumpi, mutta en tiedä päästääkö pois matriisista.
« Viimeksi muokattu: 18.10.16 - klo:16.09 kirjoittanut retu »

JA5U

  • Käyttäjä
  • Viestejä: 463
    • Profiili
Onko ne tiedostot luotu windowsissa? Jos ne siirretty palvelimelle ftp:llä binary moodissa, niissä voi olla dos-tyyliset rivinvaihdot.

Tosin grepin ei kai silti pitäisi seota niihin.

Hieman asian vierestä, kyselit grepille vaihtoehtoa ja kun kerran sorsia kaivelet yksi sellainen voisi olla ack:
https://linux.die.net/man/1/ack
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-ack-a-grep-replacement-for-developers-on-ubuntu-14-04

On monissa asioissa astetta viksumpi, mutta en tiedä päästääkö pois matriisista.
"Tux2Tux" homogeenisesti siirretty :) Nyt sain jo rivitettyä ja väritettyä materiaalia, mutta matchit puuttuu eli se oleellinen.

Koodia: [Valitse]
grep --color -i -n -r "mjono" *

nm

  • Käyttäjä
  • Viestejä: 16430
    • Profiili
"Tux2Tux" homogeenisesti siirretty :) Nyt sain jo rivitettyä ja väritettyä materiaalia, mutta matchit puuttuu eli se oleellinen.

No ei kai se huvikseen niitä rivejä listaa. Täytyyhän siellä olla täsmäys haettuun säännölliseen lausekkeeseen. Heitä joku oikea esimerkkikysely ja listaus.

JA5U

  • Käyttäjä
  • Viestejä: 463
    • Profiili
"Tux2Tux" homogeenisesti siirretty :) Nyt sain jo rivitettyä ja väritettyä materiaalia, mutta matchit puuttuu eli se oleellinen.

No ei kai se huvikseen niitä rivejä listaa. Täytyyhän siellä olla täsmäys haettuun säännölliseen lausekkeeseen. Heitä joku oikea esimerkkikysely ja listaus.
Pakko kai se on uskoa, että  ei siellä mitään rivejä ole.
Eli jos se palauttaa rivit matchien mukaan, niin melkoisia vilinää se on  ::)

Mutta googlailin lisäksi ja löytyi tällainen man:in vastakohta eli human:
http://www-users.york.ac.uk/~mijp1/teaching/2nd_year_Comp_Lab/guides/grep_awk_sed.pdf
Olis hyvä jos joku joskus loisi manista human-version...   ;)

retu

  • Käyttäjä
  • Viestejä: 949
    • Profiili
Ei välttämättä kannata lueskella noita man-sivuja netistä. Palvelimellasi näkyy olevan linux 2.6, joka onmuutaman numeron vanhempi kuin nyky-ubuntussa (jossa 4.4). Ehkä grep versiot eroavat myös. Jos haluat tietää mihin ko. versio pystyy, kannattaa tietenkin katsoa juuri sen man sivua (sieltä palvelimelta). Tosin grep:n tapauksessa erot ei ehkä ole suuria, se kun ei taida olla enää kehityksen kiivaimmassa vaiheessa.

Kokeile hakea jotain minkä tiedät olevan vain yhdessä tiedostossa. Esim. lisää vaikka index.php kommenttirivi:
Koodia: [Valitse]
# slartibartfast
ja hae sitten:
Koodia: [Valitse]
grep -rnw slartibartfast
Vieläkö tulee ruudun täydeltä tekstiä?
« Viimeksi muokattu: 19.10.16 - klo:11.03 kirjoittanut retu »

JA5U

  • Käyttäjä
  • Viestejä: 463
    • Profiili
Ei välttämättä kannata lueskella noita man-sivuja netistä. Palvelimellasi näkyy olevan linux 2.6, joka onmuutaman numeron vanhempi kuin nyky-ubuntussa (jossa 4.4). Ehkä grep versiot eroavat myös. Jos haluat tietää mihin ko. versio pystyy, kannattaa tietenkin katsoa juuri sen man sivua (sieltä palvelimelta). Tosin grep:n tapauksessa erot ei ehkä ole suuria, se kun ei taida olla enää kehityksen kiivaimmassa vaiheessa.

Kokeile hakea jotain minkä tiedät olevan vain yhdessä tiedostossa. Esim. lisää vaikka index.php kommenttirivi:
Koodia: [Valitse]
# slartibartfast
ja hae sitten:
Koodia: [Valitse]
grep -rnw slartibartfast
Vieläkö tulee ruudun täydeltä tekstiä?

Piti ihan tutustua kernel versioihin. Vanha on tosiaan, lts päättyi viime maaliskuussa.

Palatakseni aiheeseen, niin ongelma oli tosiaan tiedostoista ja käyttäjä tietämättömyydessä :)