有效地将多列提取到变量中

时间:2013-06-04 13:35:42

标签: shell awk

这看起来应该很简单,但一直在努力寻找一种方法来表达搜索来回答它。

很简单,我有一个文件结构为三列,包括名称,路径和模式。循环遍历这些行时,我想将其中的每一个提取到自己的变量中以供使用。

我目前的解决方案是(原谅错别字):

while read line
do
    name=$(echo "$line" | awk '{print $1}')
    path=$(echo "$line" | awk '{print $2}')
    pattern=$(echo "$line" | awk '{print $3}')
done < "myFile.txt"

然而,这似乎是一种非常低效的方法,因为它意味着为每个变量调用awk一次。那么,有更好的方法吗?分隔符目前只是一个选项卡,但我可以将其更改为更容易使用的任何内容。

1 个答案:

答案 0 :(得分:5)

while read name path pattern
do
    # Do something
done < myFile.txt

如果您想将分隔符更改为其他内容,例如,

while IFS=, read name path pattern
do
    # Do something
done < myFile.txt