Välkommen till linuxportalen.se!

Linuxportalen.se är Sveriges största och aktivaste webbplats för användare av öppen- och fri programvara.

Du besöker Linuxportalen.se som gäst vilket begränsar din möjlighet att använda webbplatsens alla funktioner. Genom att registera dig som medlem får du inte bara möjlighet att söka bland webbplatsens innehåll, skapa nya och delta i befintliga diskussioner, skapa din egen blogg, kommunicera med andra medlemmar genom privata meddelanden och delta i omröstningar. Du får också tillgång till Veckans Kadavro - en seriestrip unikt skapad för Linuxportalen.se!

Registeringen sker snabbt och är helt kostnadsfri - tveka inte, bli medlem idag!

Sammanfoga 2 filer och sort.

Hejsan.
Har 4-5 filer som innerhåller data som jag skulle vilja sammanfoga till en fil.
Sammanfogas med
cat fil1 >> allinfo
cat fil2 >> allinfo
cat fil3 >> allinfo
osv.

Har lika format på texten men det är datum / tid / år som skiljer dem åt
Hur kan jag sortera det i fallande ordning. så nyast hamnar sist? men i rätt följd ang tid/datum.

Mon Jul 16 13:18:59 2010 INFO: "Text"  "Text"  "Text" "Text" "Text" "Text"
Mon Jul 19 03:18:59 2010 INFO: "Text"  "Text"  "Text" "Text" "Text" "Text"
osv

Kör man bara "sort allinfol > fil2" så blir sorterar den ju endast på "Mon" ... hur kan ja får den att sortera på hela datum delen "Mon Jul 19 03:18:59 2010" ?
 

Alternativ för kommentarvisning

Välj ditt önskade sätt att visa kommentarerna och klicka på "Spara" för att verkställa dina ändringar.

fredentofts bild

Rent spontant känns det lurigt att få till det via sort då det ska sorteras först baserat på kolumn 5 för åren, sen inom varje år kolumn 2 för månad osv....

En snabbare lösning borde vara att gå via nåt skriptspråk som kan tolka strängen "Mon Jul 19 03:18:59 2010" som ett "timestamp", sortera baserat på den och sen skriva ut allt i rätt ordning.

Förutom detta kan du (om du inte behöver mellanlagra den sammanslagna filen) köra

cat fil1 fil2 fil3 | sorteringskommando > sorteradfil

istället för att köra cat på varje fil för sig...

-
För övrigt anser jag att trådindenteringen måste lagas
-
-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

valdermans bild

Du kan konvertera datum till UNIX-timestamps med date -d 'Mon Jul 19 03:18:59 2010' +%s och sedan sortera dem numeriskt med sort -n blah.

--
あるユーモアのないアホのため、シグナチャーをカエルことにした。カエルさん

hoths bild

Sort kan göra mycket, och den kan sortera som du vill. Man måste läsa manualen bara, man sort som inte säger så mycket. Mest finns på info coreutils 'sort invocation'. Hur den skal ställas in beror på vad du har i dina respektive fält, därav bara en uppmaning att läsa manualen.
 

----
Linux växer snabbast!

mrhummfs bild

Vill ju bara sortera på datumet.

hoths bild

Jo, men eftersom raden börjar med veckodag, månad och datum följt av en tid så måste du gå in och styra vilka fält och i vilken ordning som den skall sortera dem. För att göra det så krävs att man ställer in fältseparatorer etc. etc.

Att bara sortera rätt upp och ner som det ser ut ger inget bra resultat.

----
Linux växer snabbast!

mrhummfs bild

Nu har jag suttit och testat mer sort,
Sun Aug 01 09:03:06 2010 IN: "info".
grep $info $log | sort -k 5n -k 2M -k 3n
Detta verkar vara lösningen på mitt problem.
Några ider?

 

hoths bild

Nej det verkar väl bra, det är så det skall göras! Himla kompext att förklara bara, Men det beskrivs bra i manualen.

----
Linux växer snabbast!

mrhummfs bild

Ja manualen sa ett sätät en sökte jag på nätet ... och dåt hitta jag annan info som verka funka.

bla sas att man skulle anvämda -m för månder.. Tolkade det som " -m 3" t men funkade ej utan va som jag skrev ovan, Tog lite testande föt att få till det. Men nu funkar de.
Kommer nog fler frågor längre fram,
Och ja jag leter info innan jag frågar.