【发布时间】:2015-06-30 07:46:36
【问题描述】:
我的脚本有问题。
我目前正在使用:
awk '{anum=substr($1,3,22); sub(/^0+/, "", anum); print anum}' file1 | grep -nf file2 | cut -d: -f1 | awk 'FNR==NR{a[$1];next};FNR in a' - file1
文件1
5000000000009855892590xxxx xxx
5000000000000068582654xxxx xxx
5000000000009855892580xxxx xxx
5000000000000765432100xxxx xxx
文件2
9855892588
985589259
8265
76543210
我正在使用以下两个文件(file1 和 file2)获取输出:
5000000000009855892590xxxx xxx
5000000000000068582654xxxx xxx
5000000000000765432100xxxx xxx
但我的预期输出只是:
5000000000009855892590xxxx xxx
5000000000000765432100xxxx xxx
我的问题是它在 5000000000000068582654xxxx 中间捕获了 8265,这是错误的。我还能用什么来代替 grep -nf 来满足我的条件? file2 中的数字是否与 file1 的第 3 到 22 位的前缀或整数匹配(无前导零)。
【问题讨论】:
-
为什么
9765432100有一个前导 9 匹配? -
我的错。已经更新了我的问题
-
第一个文件似乎没有任何一致性,你如何决定哪些数字是允许的?
-
只是想检查这个 985589259 (file2) 是否匹配或者是 9855892590 (file1)的前缀
-
是的,但
765432100的前导 0 比该行多