求一个awk代码
有两个文件1.txt和2.txt
1.txt
a
c
e
f
h
......
2.txt
a 112121
b 2342435
c 53465454
d 354365546
e 4235446
f 3543656
g 32435465
h 433456756786
......
生成c.txt
a 112121
c 53465454
e 4235446
f 3543656
h 433456756786
...... 本帖最后由 pengjiandong 于 2020-1-8 19:24 编辑
#将文件路径进行添加便可
f1 = open("C:\\Users\\pengjiandong\\Desktop\\python_exe\\1.txt",'r')
f2 = open("C:\\Users\\pengjiandong\\Desktop\\python_exe\\2.txt",'r')
f3 = open("C:\\Users\\pengjiandong\\Desktop\\python_exe\\3.txt",'w')
a = list(f1)
b = list(f2)
for i in a:
for j in b:
if i == j:
f3.write(j)
f1.close()
f2.close()
f3.close()
# 使用awk太麻烦了,不如用shell
#!/bin/bash
2 VAR=`cat 1.txt`
3 [ -e "c.txt" ] && cat /dev/null > c.txt || exit 1
4 for a in ${VAR}
5 do
6 grep "${a}" 2.txt >>c.txt
7 done
示例文件:
# cat 1.txt
a
c
e
f
h
# cat 2.txt
a 112121
b 2342435
c 53465454
d 354365546
e 4235446
f 3543656
g 32435465
h 433456756786
其他楼层,python和shell都可以实现。
另外,使用bash命令也可以,如下:
1、使用join命令再重定向到c.txt就可以:
# join 1.txt 2.txt
a 112121
c 53465454
e 4235446
f 3543656
h 433456756786
2、麻烦点的拼凑命令:
# cat 2.txt | grep -E $(cat 1.txt | xargs -n `cat 1.txt | wc -l` | sed 's/ /|/g') > c.txt
3、使用awk 好像用不太到:
# cat 2.txt | grep -E $(cat 1.txt | xargs -n `wc 1.txt | awk '{print $1}'` | sed 's/ /|/g') > c.txt #强行用一下awk命令
结果:
# cat c.txt
a 112121
c 53465454
e 4235446
f 3543656
h 433456756786 哇 可以可以 看看 awk 'NR==FNR{a[$1]=1}NR!=FNR&&a[$1]' 1.txt 2.txt 小白默默的看大神操作中…… 谢谢楼主 谢谢楼主
页:
[1]