Ubuntu Suomen keskustelualueet

Ubuntun käyttö => Ubuntu tietokoneissa => Aiheen aloitti: Pendeli - 23.01.17 - klo:15.33

Otsikko: Nuotit hukassa ♫♫
Kirjoitti: 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
Otsikko: Vs: Nuotit hukassa ♫♫
Kirjoitti: matsukan - 23.01.17 - klo:16.43

grep ohjelmalla pystyy ainakin jos on kyseessä teksti tiedosto. binääri tiedostot on aina hankalampia ...

Lainaus
grep --color='auto' -P -n "[\x80-\xFF]" * -R

x80 tilalle nuotin unicode koodi:

http://www.fileformat.info/info/unicode/char/266b/index.htm
Otsikko: Vs: Nuotit hukassa ♫♫
Kirjoitti: Pendeli - 23.01.17 - klo:23.25
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
Otsikko: Vs: Nuotit hukassa ♫♫
Kirjoitti: Tomin - 23.01.17 - klo:23.35
Ehkäpä näin:
Koodia: [Valitse]
grep --color='auto' -P -n "\xE2\x99\xAB" * -Reli 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.
Otsikko: Vs: Nuotit hukassa ♫♫
Kirjoitti: nm - 24.01.17 - klo:00.23
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:

Koodia: [Valitse]
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:

Koodia: [Valitse]
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?  ???