Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: Pendeli - 23.01.17 - klo:15.33
-
Löytyykö ohjelmaa, millä voi hakea koneelta tiedostoja, joiden sisällössä
on esim. nuottien merkkejä (♫♫) tai muita erikoismerkkejä?
Ubuntu 14.04
-
grep ohjelmalla pystyy ainakin jos on kyseessä teksti tiedosto. binääri tiedostot on aina hankalampia ...
grep --color='auto' -P -n "[\x80-\xFF]" * -R
x80 tilalle nuotin unicode koodi:
http://www.fileformat.info/info/unicode/char/266b/index.htm
-
Paljon binaareja löytyi tuolla tempulla mutta ei hajuakaan nuoteista vielä.
Antoi vähän erilaisia tuloksia sen mukaan oliko 80:n perässä tuo pieni väliviiva tai ei.
Onko sulla linkkiä tuon komennon alkuperäissivulle?
Olikohan tuo oikea tapa ympätä nuotin koodi ( U+266B) komentoon:
grep --color='auto' -P -n "[\U+266B-\xFF]" * -R
-
Ehkäpä näin:
grep --color='auto' -P -n "\xE2\x99\xAB" * -R
eli haetaan noita kolmea peräkkäistä tavua. Jos tuossa lausekkeessa olisi esimerkiksi [a-z] niin haettaisiin kaikkia merkkejä väliltä a ja z eli myös muut kirjaimet ja vastaavalla tavalla tapahtui noissa teidänkin komennoissanne. Tässä ei ole tarvetta käyttää väliä, joten nuo arvot voi laittaa tuohon suoraan. Noista vivuista vielä sen verran, että -P tarkoittaa perl-tyyppisiä säännöllisiä lausekkeita, -n taas käskee tulostaa rivinumerot ja -R etsiä alihakemistoista. --color='auto' värjää tulosteen.
-
Kannattaa testata tiedostolla, joka varmasti sisältää etsittävän merkin.
Nämä toimivat minulla Bashissa, eli komentotulkin tehtäväksi annetaan muuntaa koodit UTF-8-merkiksi, jota grep osaa hakea, kun lokalisaatioasetukset ja kuun asento ovat oikein:
grep $'\xE2\x99\xAB' * -R
grep $'\u266b' * -R
grep '♫' * -R
Tämä toiminee komentotulkista ja terminaalista riippumatta, mutta vaatii LC_ALL=C -määrityksen ainakin minulla:
LC_ALL=C grep -P '\xE2\x99\xAB' * -R
Löytyykö ohjelmaa, millä voi hakea koneelta tiedostoja, joiden sisällössä
on esim. nuottien merkkejä (♫♫) tai muita erikoismerkkejä?
Ubuntu 14.04
Onko mitään lisävihjeitä, minkä tyyppisestä tiedostosta mahdollisesti on kyse? Grep ei suoraan löydä tuota UTF-8-tavujonoa esimerkiksi Word- tai LibreOffice-dokkareista, jotka ovat zip-pakattuja XML-tiedostoja. Tai miksi tuollaisia nuottimerkkejä ylipäätään on jossain tekstin seassa? ???