****************
* 192.168.1.1
****************
ssh -q 192.168.1.1 ntpstat
synchronised to NTP server (192.168.204.1) at stratum 5
time correct to within 281 ms
polling server every 1024 s
****************
* 192.168.1.3
****************
ssh -q 192.168.1.3 ntpstat
synchronised to NTP server (192.168.1.2) at stratum 12
time correct to within 57 ms
polling server every 1024 s
У меня есть этот текст журнала, и я хочу разделить его следующим образом:
пункт:
****************
* 192.168.1.1
****************
ssh -q 192.168.1.1 ntpstat
synchronised to NTP server (192.168.204.1) at stratum 5
time correct to within 281 ms
polling server every 1024 s
пункт 2:
****************
* 192.168.1.3
****************
ssh -q 192.168.1.3 ntpstat
synchronised to NTP server (192.168.1.2) at stratum 12
time correct to within 57 ms
polling server every 1024 s
спасибо в заранее.
Если ваш входной файл - test.log
, и вы хотите разбить его на каждую пустую строку, создав кучу пронумерованных test-XXX.log
файлов, вы можете сделать это с помощью цикла Bash, например:
number=1
while read line ; do
echo "$line" >> "test-$number.log"
if [[ -z "$line" ]] ; then
((number++))
fi
done < test.log
[ 115] или сокращенно и в одну строку:
n=1;while read l;do echo "$l">>"test-$n.log";if [[ -z "$l" ]];then ((n++));fi;done<test.log
Считывает входной файл построчно и увеличивает счетчик каждый раз, когда встречает пустую строку на входе. Имя выходного файла, к которому добавляется каждая строка, содержит счетчик, так что данные попадают в разные файлы.
Вы можете разбить файлы на записи, разделенные одной или несколькими пустыми строками, используя Awk в режиме абзаца , установив пустой разделитель записей RS
Затем можно создать числовое увеличение имена для частей, добавляя номер записи NR
к базовому имени по вашему выбору:
awk -vRS= '{print > "paragraph" NR}' log.txt
Другой вариант будет использовать csplit
с регулярным выражением /^$/
, чтобы соответствовать пустой линии:
csplit -sz --prefix='paragraph' --suffix-format='%d' log.txt '/^$/' '{*}'
Вы можете опустить --prefix
и --suffix-format
, если не возражаете против последовательности имен файлов по умолчанию xx00
, xx01
и т. д.