Awk 将字符串grep到另一个文件

Awk 将字符串grep到另一个文件,awk,grep,Awk,Grep,我有两个文件,其中: cat A.txt 5000000000000022805787 5000000000009228662688 5000000000009253546657 cat B.txt 22805177, 22805179 9228662680, 9228662689 22805787, 22805789 输出: 9228662680, 9228662689 22805787, 22805787 我想从B.txt中grep A.txt中的数字(在零之后)。我有

我有两个文件,其中:

cat A.txt

 5000000000000022805787
 5000000000009228662688
 5000000000009253546657
cat B.txt

 22805177, 22805179
 9228662680, 9228662689
 22805787, 22805789
输出:

 9228662680, 9228662689
 22805787, 22805787
我想从B.txt中grep A.txt中的数字(在零之后)。我有下面的代码,但没有显示输出

 awk '{anum=substr($1,3,19); sub(/^0+/, "", anum); print anum}' A.txt | grep -nf B.txt
PS


你应该反过来做

您需要使用
awk
生成的模式进行搜索。所以你可以写一些像

$ grep "$(awk '{anum=substr($1,3,19); sub(/^0+/, "", anum); print anum}' a)" b
9228662680, 9228662689
22805787, 22805789

PS您完全可以使用
awk

完成此操作。您缺少一个破折号来指定文件来自管道

awk '{anum=substr($1,3,19); sub(/^0+/, "", anum); print anum}' A.txt | grep -f - B.txt
这个输出

9228662680, 9228662689
22805787, 22805789

您希望如何准确地获得输出?例如,数字22805187不在.txt中,但它会显示在输出中。通过
9228662680、9228662689
您是否尝试将其范围从
9228662680
9228662689
?或者您正在对每个数字进行比较?例如,awk结果是922866268,只需从B.txt中的所有记录中对其进行grep,那么输出将是9228662680、9228662689。但是您如何获得此行
22805187、22805189
?awk没有生产这两个号码哦,对不起。已经更新了我的问题
9228662680, 9228662689
22805787, 22805789