如何在没有循环的情况下逐行读取文件

时间:2018-05-30 23:59:59

标签: bash file loops xargs gnu-parallel

所以你知道这个吗?: Read a file line by line assigning the value to a variable

如何在没有循环的情况下执行此操作,我会遇到循环会出现错误和混乱的情况。(如果您曾经尝试过乱用并行)但我仍然需要读取文件逐行。

有没有循环的方法呢? xargsawkparallel

4 个答案:

答案 0 :(得分:2)

使用readarray将整个文件读入数组变量。每一行都是一个数组元素。

readarray -t arrayname < filename

答案 1 :(得分:1)

这个问题对我来说真的没什么意义,但你当然可以做到:

{
read line_one <&3; # Read from the input file
echo "The first line is $line_one"
read line_two -u 3;  # A different method to read
echo "The second line in $line_two"
...
} 3< input file

请注意,从fd 3读取并不是必需的,但如果您的命令不是从与读取相同的输入读取,那么它会更安全。

但是,如果你真的&#34;在这种情况下,循环会出现错误和混乱的情况。那么你有一个问题,这不是解决方案。

答案 2 :(得分:0)

FWIW,使用递归函数(好吧,递归可能是循环...)。首先是一些测试材料:

&#x20b9;

然后是函数$ seq 1 4 > file

fun

呼吁$ fun() { if read -r line <&5 # read from defined FD 5 then echo process $line # process the lines here fun # recursive function call fi }

fun

答案 3 :(得分:0)

有点不清楚你在问什么。也许你只是要求:

myvar="$(cat thefile)"