我有一个格式如下的日志文件:
job.context
......依此类推,数千次。总是分为4行。
我试图创建一个可以将每一行读入特定变量的循环,以便我可以对其执行某些操作,然后对每个组重复此操作。
这不起作用,但我希望我能走上正轨(回声只是检查它是否正常工作):
$ cat log.txt
--
John Smith
12.34.56.78
Mon Nov 06, 2017 6:48 pm
--
Jane Doe
23.34.56.78
Mon Nov 06, 2017 6:49 pm
如何修改while read separator username ip datetime; do
echo "separator: [$separator]"
echo "username: [$username]"
echo "ip: [$ip]"
echo "datetime: [$datetime]"
done < log.txt
以将每个整个文本行视为单个变量?然后下一行作为一个不同的变量?
谢谢。
编辑:哇,在其他人决定这是现有问题的完全重复之前,你怎么看?不是。
答案 0 :(得分:1)
while mapfile -t -n 4 blocks && ((${#blocks[@]})); do
echo "separator: [${blocks[0]}]"
echo "username: [${blocks[1]}]"
echo "ip: [${blocks[2]}]"
echo "datetime: [${blocks[3]}]"
done < log.txt