Räkna antal rader i en fil och dela upp den i 2 filer med Bash script
Jag har ett Bash script som jag kör en gång i timmen som bla läser lite information från en enhet via mitt nätverk via SNMP-get och sparar denna information i en textfil.
Jag vill nu dela upp min textfil automatiskt när den börjar bli för stor (tex då antalet rader är över 1000).
Utdrag ut mitt script
Filen <test.sh>:
= = = = =
# Lägg till datum i tillfällig fil
date > /Users/admin/Documents/script/temp
# Lägg till publik IP i slutet på tillfällig fil
curl ifconfig.me >> /Users/admin/Documents/script/temp
#Lägg ny data i början på loggfilen
cat /Users/admin/Documents/script/temp /Users/admin/Documents/script/logg.txt > temp2 && mv temp2 /Users/admin/Documents/script/logg.txt
# Rensa bort temp
rm /Users/admin/Documents/script/temp
= = = = =
(Kan ha blivit några stavfel.. och det går kanske att slå ihop filerna utan att skapa en tillfällig fil...)
Nu till mitt problem.
Jag vill dela upp min loggfil i en ny fil när den börjat bli för stor.
Tex:
Om antalet rader är mer än 1000
Flytta rad 500-1000 till en ny fil: Logg(Datum).txt
Ta bort rad 500-100 från logg.txt
Det jag får problem med är när jag ska räkna raderna i filen.
Jag har provat: wc -l < /Users/admin/Documents/script/logg.txt | xargs
Detta ger mig antalet rader när jag kör kommandot från terminalen. Men jag lyckas inte skapa en If sats som använder resultatet från "wc -l" kommandot i mitt script.
Jag vill omvandla resultatet, som jag misstänker är en String, till en Integer så att jag kan köra:
IF( 1000 < (wc -l < /Users/admin/Documents/script/logg.txt | xargs))
THEN
xxxx
ELSE
FI
Tar gärna emot tips på hur detta fungerar eller andra alternativ som kanske är bättre lämpade.