Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将连续的文本行读入不同的变量?_Bash_Variables_Text - Fatal编程技术网

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

Bash 将连续的文本行读入不同的变量?,bash,variables,text,Bash,Variables,Text,我有一个如下格式的日志文件: $ 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 。。。等等,几千次。始终以4行为一组 我试图创建一个循环,可以将每一行读入一个特定的变量,这样我就可以对它做一些事情,然后对每个组重复这个过程 这不起作用,但我希望我在正确的轨道上回声只是检查它是否正常工作: while read sepa

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

$ 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
。。。等等,几千次。始终以4行为一组

我试图创建一个循环,可以将每一行读入一个特定的变量,这样我就可以对它做一些事情,然后对每个组重复这个过程

这不起作用,但我希望我在正确的轨道上回声只是检查它是否正常工作:

while read separator username ip datetime; do
    echo "separator: [$separator]"
    echo "username: [$username]"
    echo "ip: [$ip]"
    echo "datetime: [$datetime]"
done < log.txt
如何修改read以将整个文本行视为单个变量?那么下一行作为不同的变量

多谢各位


编辑:哇,在其他人认为这是一个与现有问题完全相同的问题之前,你先读一下怎么样?不是

啊,阵列。好主意我以前从未使用过mapfile,所以现在是开始的好时机DNo,页面上显示的内容与我的示例案例不匹配。不过还是谢谢你
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