Bash每行读取两个文件行

时间:2014-11-25 14:18:37

标签: bash loops

我想要做的正确语法是:

  

exec 5<文件1

     

exec 6< file2的

     

读取line1<& 5&&读取第2行<& 6

     

DO

     

sed -i" s / value_to_modify / $ line2 /" / $ LINE1 / file_to_modify

     

完成

感谢

这是问题所在;我想读两个文件: 第一个文件包含此行

folder1 
folder2 
folder3 
folder2

第二个文件包含此行

Description1
Description2
Description3
Description4

我想修改每个文件夹中的文件,其中Description1为folder1,Description2为folder2 ...

有没有办法用于循环?

for line_file1 in $(cat file1)
do
    for line_file2 in $(cat file2)
      do
        sed -i "s/value/$line_file2/" /$line_file1/file_to_modify
      done
  done

由于

奥利弗

1 个答案:

答案 0 :(得分:2)

你需要这样做:

#! /bin/bash    
while true; do
  read -r folder <&3
  if [ -z "$folder" ]; then
      break
  fi
  read -r line_file2 <&4
  sed -i "s/value/$line_file2/" /$folder/file_to_modify
done 3<fileOfFolders 4<fileOfLines

如果这两个文件的行数不同,您需要检查它。