Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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 - Fatal编程技术网

Bash 逐行读取两个文件并同时处理它们

Bash 逐行读取两个文件并同时处理它们,bash,Bash,大家好,我对这个游戏还很陌生,所以我的问题可能很简单,但我很长一段时间都被这个问题困扰着。我想逐行同时处理两个文件列表中的两个文件 我正在尝试: read file1 && read file2; do echo "$file1 and $file2" done echo当然只是脚本其余部分的一个空格,但我没有设法从读取操作中获取任何变量 LINECOUNTER=1 while true; do FILE1INPUT="$(sed -n

大家好,我对这个游戏还很陌生,所以我的问题可能很简单,但我很长一段时间都被这个问题困扰着。我想逐行同时处理两个文件列表中的两个文件

我正在尝试:

 read file1 && read file2; 
    do 
    echo "$file1 and $file2"
    done 
echo当然只是脚本其余部分的一个空格,但我没有设法从读取操作中获取任何变量

LINECOUNTER=1
while true; do
    FILE1INPUT="$(sed -n "${LINECOUNTER}p" file1.txt)"
    FILE2INPUT="$(sed -n "${LINECOUNTER}p" file2.txt)"
    echo "$FILE1INPUT and $FILE1INPUT"
    let LINECOUNTER=LINECOUNTER+1
done
  • LINECOUNTER变量只是为了记住下一个要输出的行
  • 然后将sed命令的输出
    $(sed…
    分配给 变量FILE1INPUT。此sed命令只读取一行指定的内容 通过file1.txt中的LINECOUNTER。与file2.txt相同
  • 然后将LINECOUNTER递增1,以便下次执行sed时 返回下一行

当然,while循环结束需要一个合适的条件。

您需要两个单独的文件描述符来同时读取两个文件。其中一个可以是标准输入

while IFS= read -r line1 && IFS= read -r line2 <&3; do
  echo "File 1: $line1"
  echo "File 2: $line2"
done < file1 3< file2

当IFS=read-r line 1和&IFS=read-r line 2时,您缺少while
关键字。没有理由对每个文件的每一行运行
sed