awk两列成bash for循环

时间:2015-11-11 19:55:01

标签: bash awk

请帮忙!

我在这里有一点时间敏感问题,所以我转向Stackoverflow,希望能得到一个相当快的回复。我不是bash专家,特别是在必须快速思考的时候。我试图从用户数据库中的两列awk到OpenStack API。数据库(我创建的平面文件)非常简单。它看起来像这样:

| ID | username | True |

数据库非常大,所以我试图遍历这个。这是我试图运行的命令:

for user in $(cat users.txt); do keystone user-role-add --user $user --role blah --tenant $tenant; done

这很有用,假设users.txt列表在每一行都有一个用户名。

我需要修改此命令以从$ user用户的user.txt中提取用户名,并从$ tenant中的users.txt中提取相应的ID

*解决方案*

while read line;do
  tenant=$(echo $line|awk '{print $2}')
  user=$(echo $line|awk '{print $4}')
  keystone user-role-add --user $user --role blah --tenant $tenant
done <users.txt

再次感谢!

2 个答案:

答案 0 :(得分:1)

你可能想要像...这样的东西。

while read line;do
  id=$(echo $line|awk '{print $2}')
  username=$(echo $line|awk '{print $4}')
  bool=$(echo $line|awk '{print $6}')
  # do other
  # action here
done <users.txt

答案 1 :(得分:1)

这样可以避免使用awk,它应该更加优化:

credential.helper