简体   繁体   中英

2 while loop to read contents of a file

I have 2 file. Let's say file1 and file2. I want to read the file1 together with the file2 so it will give me an output into one single line.

eg. file1 = contents "123.45.67.89" file2 = contents "hostname.cco"

output: 123.45.67.89 hostname.cco

Im runninng nested loop but seems I can not accoumplish what I want to do.

It's actually quite simple, but it does require reading from more than one file descriptor. Essentially, you set up a read loop, as normal, and redirect a file to fd3 and a second file on stdin , you can then read independent lines from each file on each iteration of the loop. (eg read line1 from file1, line1 from file2, and so on). You can use:

#!/bin/bash

while read -r -u 3 linea; do               ## reads linea from file1
    read -r lineb;                         ## reads lineb from file2
    printf "%s %s\n" "$linea" "$lineb"     ## outputs combined lines
done 3<"$1" <"$2"  ## notice first file on fd3 and 2nd on stdin

exit 0

Example Use/Output

Then using your file content for file1 and file2 , you would get the following output:

$ bash read2fd.sh file1 file2
123.45.67.89 hostname.cco

If that is not what you intended, please let me know and I'm happy to help further.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM