使用 awk 进行表查找
我想使用 awk 从文本文件中查找值。文本文件的格式非常简单:
text \t value
文本\t值
文本\t值
...
我想传递应通过 shell 变量查找其值的实际文本,例如 $1。
我有什么想法可以用 awk 来做到这一点吗?
非常感谢您的帮助。
一切顺利, 阿尔贝托
I would like to use awk to lookup a value from a text file. The text file has a very simple format:
text \t value
text \t value
text \t value
...
I want to pass the actual text for which the value should be looked up via a shell variable, e.g., $1.
Any ideas how I can do this with awk?
your help is great appreciated.
All the best,
Alberto
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以在没有 shell 包装器的纯 AWK 脚本中执行此操作:
像这样调用它:
示例:
甚至可以扩展为使用参数选择所需的字段。
例子:
You can do this in a pure AWK script without a shell wrapper:
Call it like this:
Example:
This could even be extended to select the desired field using an argument.
Example:
像这样的事情就可以完成这项工作:
本质上,您将 $1 中传递到 shell 脚本的查找值设置为 awk 变量,然后您可以在 awk 本身中访问它。澄清一下,第一个 $1 是在命令行中传入的 shell 脚本参数,第二个 $1 (以及后续的 $2)是输入文件的字段 1 和 2。
Something like this would do the job:
Essentially you set the lookup value passed into the shell script in $1 to an awk variable, then you can access that within awk itself. To clarify, the first $1 is the shell script argument passed in on the command line, the second $1 (and subsequent $2) are fields 1 and 2 of the input file.
我认为 grep 实际上可能更适合:
模式上的 ^ 是为了匹配行的开头,并确保您不匹配值(而不是键)是所需文本的行。
I think grep might actually be a better fit:
The ^ on the pattern is to match to the start of the line and ensure that you don't match a line where the value, rather than the key, was the desired text.