Miten Linuxin Bashissa saa etsittyä tietyssä kansiossa olevien csv-tiedostojen ne rivit, joissa esiintyy jokin annetuista päivämääristä? Ajattelin, että tämän voisi tehdä säännöllisillä lausekkeilla, mutta en keksinyt tapaa. Esimerkiksi jos haluaisin etsiä ne tiedostot, joissa esiintyy 1.1.2019 tai 19.4.2019, niin sain listattua niitä komennolla
grep -E '1.1.2019|19.4.2019' *.csv
Tällöin kuitenkin haku palautti myös tiedoston, jossa on päivämäärä 31.1.2019, mitä en halua mukaan.
Lausekkeeseen pitää merkitä jotenkin päivämäärän alku ja loppu. Esimerkiksi ^ ja $ merkkaavat rivin alkua ja loppua ja \D merkitsee ei-numeroa ainakin Perlin murteessa, jonka saa käyttöön -E:n sijaan -P:llä.
\b on Perl regexissä "word boundary" eli se estää ykköstä edeltävän numeron mätsäämisen tuossa esimerkissä.
Aihe on jo aika vanha, joten et voi enää vastata siihen.