2013-05-20 44 views
1

我需要从一个循环中的多个文件读取。我有一个带有X个坐标的文件,一个带有Y坐标的文件和一个带有坐标的坐标的文件...如何在一个循环中读取多个文件?

现在我使用粘贴将这些文件放在一起,然后在while循环中使用剪切来将它们分开:

cat $file | while -r line; do 
    Y=$(echo "$line" | cut -d\ -f1) 
    X=$(echo "$line" | cut -d\ -f2) 
    CHAR=$(echo "$line" | cut -d\ -f3) 
done 

,但这个问题是,它是很慢(调用再次下调,再次)..

我应该怎么做这个有在$ Y,$ X和$每个回路正确的价值观CHAR,同时加快速度?

在此先感谢^ _^

+1

像'而读取X Y CHAR'? –

+0

你是对的人^ _ ^谢谢。如果你想要接受答案的声望,只需复制你的评论(没有看到选项接受评论作为答案..)。 – Paladin

回答

4

我不知道该怎么做,而不paste,但你可以避免cut在一个read分配的所有变量:

while read -r X Y CHAR; do 
    echo "X = $X; Y = $Y; CHAR = $CHAR"; 
done < "$file" 
+0

粘贴不成​​问题,剪辑是:) – Paladin

4

您可以致电read三次,每个来自不同的文件描述符。

# Use && to stop reading once the shortest file is consumed 
while read -u 3 -r X && 
     read -u 4 -r Y && 
     read -u 5 -r CHAR; do 
    ... 
done 3< X.txt 4< Y.txt 5< CHAR.txt 

-ubash扩展,用于清晰。对于POSIX兼容,每次通话将看起来像read -r X <&3。)

相关问题