我有一个数字列表。
对于每个数字,我想在另一个文件中找到它。
但我只想在第12列找到它。
我尝试了很多方法,包括变量注入:
for line in `cat numbers.txt`; do awk -F'|' -v "LINE=$line" '$12~/LINE/' bigfilewithcolumns.txt; done
使用 awk 可以实现吗?
我有一个数字列表。
对于每个数字,我想在另一个文件中找到它。
但我只想在第12列找到它。
我尝试了很多方法,包括变量注入:
for line in `cat numbers.txt`; do awk -F'|' -v "LINE=$line" '$12~/LINE/' bigfilewithcolumns.txt; done
使用 awk 可以实现吗?
您不想为数字文件中的每一行都调用单独的 awk。awk 可以处理多个文件:
awk
可能是适合此目的的工具。为了完整起见,如果 中的列数bigfilewithcolumns.txt
已知且为常数,并且您显然不关心输出顺序,那么 也可以完成此任务join
。如果您的 shell 是bash
:其中
N
是列数bigfilewithcolumns.txt
。如果您的 shell 不是,bash
则需要找到另一种方法将选项传递-o 2.1,2.2,...,2.N
给join
。如果你
join
是 GNU,join
你可以简化一点:此条件
检查
LINE
第 12 列中是否有任何位置。此外,使用正则表达式处理数字可能会导致匹配不同的数字,例如不仅对 234 适用,对 1234、2345 和 12345 等也适用。
==
如果您希望限制等于该数字,则应使用 is equal。我会按照以下方式改进您的代码