Sto usando il seguente script bash per eliminare tutte le righe tranne "x" in un file di registro:
#!/bin/bash
# Script to write to the log file every minute and delete all but the last
# set time in hours
echo `date +\%Y\%m\%d\%H\%M\%S`,`/home/pi/temp/temp` >> /home/pi/temp/temp.log
HOURS="12" #Nr of hours in the log
LINES=$(( $HOURS * 60 + 1 )) #Nr of minutes/lines in the log
echo $LINES #Included just for testing if i'm getting the desired amount of lines
sed -e :a -e '$q;N;$LINES,$D;ba' temp.log >temp1.log ;mv temp1.log temp.log
Ho sostituito $ LINES per il suo valore (12 ore), 721 e lo script funziona come cron task, viene eseguito ogni minuto, senza errori, quindi sono sicuro che l'errore si trova nella parte che include la variabile in sed.
Inoltre, l'ho appena copiato da qualche sito Web, se qualcuno potesse essere abbastanza gentile da spiegarmi cosa sta succedendo nel comando sed, forse sarei in grado di capire da solo l'errore.
Questo è l'errore:
sed: -e expression #2, char 8: extra characters after command.
Inoltre, elimina tutte le righe nel file.