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

Har*_*ikk 0 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"
Run Code Online (Sandbox Code Playgroud)

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

Sea*_*ght 5

while read name path pattern
do
    # Do something
done < myFile.txt
Run Code Online (Sandbox Code Playgroud)

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

while IFS=, read name path pattern
do
    # Do something
done < myFile.txt
Run Code Online (Sandbox Code Playgroud)