将连续的文本行读入不同的变量?

时间:2017-11-07 05:31:36

标签: bash variables text

我有一个格式如下的日志文件:

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 以将每个整个文本行视为单个变量?然后下一行作为一个不同的变量?

谢谢。

编辑:哇,在其他人决定这是现有问题的完全重复之前,你怎么看?不是。

1 个答案:

答案 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