我想从2.txt中的零后面的前三位数字中查看1.txt中数字的前三位数。
cat 1.txt
23456
12345
6789
cat 2.txt
20000023485 xxx888
20000012356 xxx888
20000067234 xxx234
预期输出
20000023485 xxx888
20000012356 xxx888
答案 0 :(得分:1)
尝试使用grep:
grep -f <(sed 's/^\(...\).*/00\1/' file1) file2
输出:
20000023485 xxx 20000012356 xxx
答案 1 :(得分:1)
awk 'FNR==NR {a[substr($1,0,3)];next}
{match($1, /0+/);
if(substr($1, RSTART+RLENGTH,3) in a)print}' 1.txt 2.txt
{a[substr($1,0,3)];next}
- 将前3个字符存储在关联数组中。
match($1, /0+/);if(substr($1, RSTART+RLENGTH,3) in a)
在一系列零之后匹配3个字符,并检查先前创建的关联数组中是否存在这3个字符,如果找到匹配则打印整行。
答案 2 :(得分:0)
grep -f将匹配给定文件中的一系列模式,每行一个。但首先你需要将1.txt变成你想要的模式。在你的情况下,你想要每行1.txt的前三个字符,在零之后:00 * 234,00 * 123等。(我假设你想要至少一个零。)
sed -e 's/^\(...\).*$/00*\1/' 1.txt > 1f.txt
grep -f 1f.txt 2.txt