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命令的输出
分配给 变量FILE1INPUT。此sed命令只读取一行指定的内容 通过file1.txt中的LINECOUNTER。与file2.txt相同$(sed…
- 然后将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
。