鱼C论坛

 找回密码
 立即注册
查看: 3649|回复: 9

[已解决]求一个awk代码

[复制链接]
发表于 2020-1-8 15:49:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x

有两个文件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
......
最佳答案
2020-1-23 16:59:11
示例文件:
[root@localhost tmp]# cat 1.txt
a
c
e
f
h
[root@localhost tmp]# 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就可以:
[root@localhost tmp]# join 1.txt 2.txt
a 112121
c 53465454
e 4235446
f 3543656
h 433456756786

2、麻烦点的拼凑命令:
[root@localhost tmp]# cat 2.txt | grep -E $(cat 1.txt | xargs -n `cat 1.txt | wc -l` | sed 's/ /|/g') > c.txt

3、使用awk 好像用不太到:
[root@localhost tmp]# cat 2.txt | grep -E $(cat 1.txt | xargs -n `wc 1.txt | awk '{print $1}'` | sed 's/ /|/g') > c.txt        #强行用一下awk命令


结果:
[root@localhost tmp]# cat c.txt
a        112121
c        53465454
e        4235446
f        3543656
h        433456756786
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-1-8 18:54:43 | 显示全部楼层
本帖最后由 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[0] == j[0]:
            f3.write(j)
f1.close()
f2.close()
f3.close()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-15 12:59:57 | 显示全部楼层

回帖奖励 +20 鱼币

# 使用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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-23 16:59:11 | 显示全部楼层    本楼为最佳答案   

回帖奖励 +20 鱼币

示例文件:
[root@localhost tmp]# cat 1.txt
a
c
e
f
h
[root@localhost tmp]# 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就可以:
[root@localhost tmp]# join 1.txt 2.txt
a 112121
c 53465454
e 4235446
f 3543656
h 433456756786

2、麻烦点的拼凑命令:
[root@localhost tmp]# cat 2.txt | grep -E $(cat 1.txt | xargs -n `cat 1.txt | wc -l` | sed 's/ /|/g') > c.txt

3、使用awk 好像用不太到:
[root@localhost tmp]# cat 2.txt | grep -E $(cat 1.txt | xargs -n `wc 1.txt | awk '{print $1}'` | sed 's/ /|/g') > c.txt        #强行用一下awk命令


结果:
[root@localhost tmp]# cat c.txt
a        112121
c        53465454
e        4235446
f        3543656
h        433456756786
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-30 16:21:36 | 显示全部楼层
哇 可以可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-3 10:50:22 | 显示全部楼层
看看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-2-3 17:14:01 | 显示全部楼层
awk 'NR==FNR{a[$1]=1}NR!=FNR&&a[$1]' 1.txt 2.txt
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-2-13 14:13:09 | 显示全部楼层
小白默默的看大神操作中……
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 08:24:07 | 显示全部楼层

回帖奖励 +20 鱼币

谢谢楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-1 11:34:33 | 显示全部楼层
谢谢楼主
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-23 05:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表