Скрипт Bash, который создает новый файл, когда выходной файл превышает определенное количество строк

#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.