skripti tekstin korvaamiseen

Liittynyt
03.07.2018
Viestejä
362
Mikä olisi hyvä linux-komento macbookkiin jolla voisi tehdä pikakuvakkeen mihin voisi raahata sql-dumppitiedoston ja sitten tämä skripti suorittaisi useita search&replace komentoja tähän tiedostoon ja lopuksi tallentaisi sen.

pitäisi olla silleen helppo että ei muuta enkoodausta utf8:sta miksikään ja tukisi myös erikoismerkkejä kuten / \ (tab) ilman että tarvitsisi pähkäillä niiden escapetuksen kanssa.
Joku grep skriptihän toimii noiden kanssa juuri huonosti
 
Vähän riippuu minkälaisia operaatioita tiedostolle pitää tehdä. Onhan noita sed, grep (ja egrep ja fgrep), awk tai vaikka ihan pythonilla tekee jos on jotain monimutkaisempaa korvattavaa. Eikä grep mitenkään huonosti tuossa toimi ellei mitään escape-merkkejä tarvitse käpistellä. Kaikissa on omat puolensa, paha yhtäkkiä sanoa mutta sed on aika kätevä kyllä yksinkertaisiin search/replace -hommiin että siitä melkein aloittaisin tuon miettimisen.

Eikä se enkoodauksen muuttuminenkaan välttämättä ongelma ole, ainahan filettä voi muuttaa enkoodauksesta toiseen vaikka iconv:lla. Toki aina parempi jos ei tarvitse tuohon ryhtyä.
 
Mysql:n mukana joskus tuli replace-komentorivityökalu (≈ linux-komento), jolla tuo onnistuu helposti. Toki esim sedilläkin (≠ setä) onnistuu. Merkistö ja erikoismerkit ei tuossa merkkaa juurikaan, enempi murhetta tulee siitä että käytännössä tuon työkalun pitäisi ymmärtää, mikä osa on kyselyä ja mitkä sen arvoja. Muuten esim. pelkän "select" tekstin korvaaminen tuottaa epähaluttuja tuloksia, sitä en osaa sanoa osaisko tuo replace komento ymmärtää sen päälle.

 
Mysql:n mukana joskus tuli replace-komentorivityökalu (≈ linux-komento), jolla tuo onnistuu helposti. Toki esim sedilläkin (≠ setä) onnistuu. Merkistö ja erikoismerkit ei tuossa merkkaa juurikaan, enempi murhetta tulee siitä että käytännössä tuon työkalun pitäisi ymmärtää, mikä osa on kyselyä ja mitkä sen arvoja. Muuten esim. pelkän "select" tekstin korvaaminen tuottaa epähaluttuja tuloksia, sitä en osaa sanoa osaisko tuo replace komento ymmärtää sen päälle.

Aika samat ongelmat on noilla sed/grep/... -komennoillakin, mutta paha sanoa tuon enempää kun ei tiedä minkämoisia muokkauksia on tarkoitus tehdä. Tosin, casesensitive-replacellakin pääsee monesti pitkälle kun ainakin postgresin dumpissa on tietokantakomennot all-caps ja datassa ei niin todennäköisesti ole vastaavia termejä.
 
Awk on tuon tapaaisen ainakin toimiva jos jaksaa opetella. Joissakin skriptikielissä voi itse määritellä, mikä on regexpin erikoismerkki. Jos siis tarvitsee mätsätä /-merkkiin niin komennossa voi käyttää vaikka risuaitaa sen sijaan.
 
Vähän jäi arvoitukseksi mikä on käyttökohde, mut oletko automatoriin tutustunut? MacOSin oma ohjelma, jolla saa kaikennäköistä automaatiota tehtyä. Vrt. Tasker Androidilla.
 
Viimeksi muokattu:

Uusimmat viestit

Statistiikka

Viestiketjuista
261 820
Viestejä
4 548 289
Jäsenet
74 850
Uusin jäsen
Max-fix

Hinta.fi

Back
Ylös Bottom