在一个while循环中读取两个文件中的行

时间:2012-03-27 07:47:09

标签: bash

我有一个文件,file1.csv包含:

This
is
some
text.

我正在使用while read line来循环每一行,例如:

while read line; do
    echo $line
done < file1.csv

我有另一个文件,行数相同,称为file2.csv

A
B
C
D

每行的数据对应于相同行号的第一个文件中的数据。

  • 如何修改while循环,以便它可以从file2.csv打印相应的行?

3 个答案:

答案 0 :(得分:16)

使用另一个FD。

while read line; do
  if ! read -u 3 line2
  then
    break
  fi
  echo "$line***$line2"
done < file1.csv 3< file2.csv

答案 1 :(得分:9)

您可以尝试使用paste实用程序:

$ cat one
this
is
some
text
$ cat two
1
2
3
4
$ while read a b ; do echo $a -- $b ; done < <(paste one two)
this -- 1
is -- 2
some -- 3
text -- 4

答案 2 :(得分:8)

您可以使用paste命令:

$ paste -d, file{1,2}.csv | while IFS=, read x y; do echo "$x:$y"; done
This:A
is:B
some:C
text.:D