#linux #bash #shell #scripting #script
Вопрос:
Я сделал сценарий bash, который добавит некоторые данные в файл.
#!/bin/bash HOME_DISK=$(df --output=avail /home | awk 'FNR == 2 {print}') VAR_DISK=$(df --output=avail /var | awk 'FNR == 2 {print}') TOTAL_MEM=$(grep MemTotal /proc/meminfo | awk '{print $2}') DATE=$(date " %Y-%m-%d %H:%M:") CPU_USAGE="$DATE CPU: $CPU_USAGE" echo $HOME_DISK, $VAR_DISK, $TOTAL_MEM >> /home/neerajR/trail.out
В этом скрипте я хочу добавить функциональность для создания новых файлов с именами trail1.out, trail2.out,…… когда предыдущий файл превышает 100 строк.
Комментарии:
1. Как вы планируете отслеживать, сколько строк вы добавили? Есть ли где-то, где вы можете хранить эти данные, или вам придется каждый раз читать файл, чтобы подсчитать строки (что может быть неэффективно?)
2. Мне придется каждый раз читать файл, чтобы сосчитать строки.
Ответ №1:
Вы можете использовать комбинацию следующих команд и операторов bash:
wc -l <file> : count the amount of lines in a file. if [$nbr -ge 100]; then ... fi : if-clause. head -n 100 <file> : get the first 100 lines of a file. xxx = $((total - 100)) : perform a calculation. tail -n $xxx <file> : get the rest of the file.