****************
* 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提前谢谢。
发布于 2018-07-06 08:33:08
如果您的输入文件是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 或缩短为一行:
n=1;while read l;do echo "$l">>"test-$n.log";if [[ -z "$l" ]];then ((n++));fi;done这将逐行读取输入文件,并在每次输入中遇到空行时增加计数器。每一行所附加的输出文件名包含计数器,以便数据以不同的文件结束。
发布于 2018-07-06 11:25:55
通过设置空记录分隔符RS,可以使用段落模式使用Awk将文件拆分为记录,分隔为一个或多个空行。
然后,通过将记录号NR附加到您选择的基名中,可以为这些片段创建数字递增的名称:
awk -vRS= '{print > "paragraph" NR}' log.txt另一个选项是使用csplit与正则表达式/^$/匹配空行:
csplit -sz --prefix='paragraph' --suffix-format='%d' log.txt '/^$/' '{*}'如果您不介意默认的文件名序列--prefix、xx01等,则可以省略xx00和D9。
https://askubuntu.com/questions/1052622
复制相似问题