Predpokladajme, že existuje súbor, ktorý vyzerá takto:
xxxx aa whatever
yyyy bb whatever
zzzz aa whatever
Rád by som ich rozdelil na 2 súbory, ktoré obsahujú:
najprv:
xxxx aa whatever
zzzz aa whatever
druhá:
yyyy bb whatever
Tj. Chcem zoskupiť riadky podľa určitej hodnoty v riadkoch (pravidlo môže byť: 2. slovo oddelené medzerami), ale nepreusporiadajte riadky v rámci skupín.
Samozrejme, že na to môžem napísať program, ale zaujímalo by ma, či existuje nejaký pripravený nástroj, ktorý dokáže niečo také?
Ospravedlňujeme sa, nespomenul som to, ako som predpokladalcelkom zrejmé - množstvo rôznych „slov“ je obrovské. hovoríme o nich najmenej 10 000. Tj. žiadne riešenie založené na vymenovaní slov pred rukou nebude fungovať.
A tiež - rád by som nemal rád rozdelenie na viac priechodov - príslušné súbory sú zvyčajne dosť veľké.
odpovede:
6 pre odpoveď č. 1Takto sa vytvoria súbory s názvom output.aa
, output.bb
, atď.:
awk "{print >> "output." $2}" input.file
1 pre odpoveď č. 2
Mohli by ste urobiť grep, aby ste dostali čiary, ktoré sa zhodujú, a grep-v, aby ste získali čiary, ktoré sa nezhodujú.
Hm, mohol by si to urobiť sort -f" " -s -k 2,2
, ale to je O (n log n).