免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 1683 | 回复: 11
打印 上一主题 下一主题

[文本处理] 替代文件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2015-04-27 13:06 |只看该作者 |倒序浏览
大家好,问个问题啊:
我有个脚本comp,命令行下求join,具体使用方式是:
cat test1.txt | comp test2.txt -k1:1,输出:
a 2 5
b 3 7
如果test2.txt需要经过一步grep计算才能得到,那此时为标准输出,怎么能把这个标准输出转变为文件形式,从而使用上面的命令行?
可以通过临时文件解决,还有其它方式吗~?

其中,test1.txt和text2.txt的内容分别是:
test1.txt:
a 2
b 3

test2.txt:
a 5
b 7

求职 : 机器学习
论坛徽章:
79
2015年亚洲杯纪念徽章
日期:2015-05-06 19:18:572015七夕节徽章
日期:2015-08-21 11:06:172015亚冠之阿尔纳斯尔
日期:2015-09-07 09:30:232015亚冠之萨济拖拉机
日期:2015-10-21 08:26:3915-16赛季CBA联赛之浙江
日期:2015-12-30 09:59:1815-16赛季CBA联赛之浙江
日期:2016-01-10 12:35:21技术图书徽章
日期:2016-01-15 11:07:2015-16赛季CBA联赛之新疆
日期:2016-02-24 13:46:0215-16赛季CBA联赛之吉林
日期:2016-06-26 01:07:172015-2016NBA季后赛纪念章
日期:2016-06-28 17:44:45黑曼巴
日期:2016-06-28 17:44:4515-16赛季CBA联赛之浙江
日期:2017-07-18 13:41:54
2 [报告]
发表于 2015-04-27 13:22 |只看该作者
本帖最后由 zsszss0000 于 2015-04-27 13:22 编辑

LZ是这个意思吗?

aa
  1. a 2
  2. b 3
复制代码
bb
  1. a 5
  2. b 7
复制代码
  1. awk '{a[$1]=a[$1]"\t"$2}END{for(i in a)print a[i]}' aa bb
复制代码
  1. a       2       5
  2. b       3       7
复制代码

论坛徽章:
0
3 [报告]
发表于 2015-04-27 13:37 |只看该作者
回复 2# zsszss0000


    这种方式我知道的,主要想知道,怎么在该用文件的地方,使用一些命令替换掉
比如,某个参数需要的是文件A.txt,而A可以由:cat B.txt | grep 123 > A.txt得到
怎么把cat B.txt | grep 123放到A.txt的位置(某个参数需要的是文件A.txt这个位置)

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
4 [报告]
发表于 2015-04-27 14:06 |只看该作者
回复 3# whq39

原需求 别绕路
   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
5 [报告]
发表于 2015-04-27 14:09 |只看该作者
能否介绍一下你的comp脚本和系统的join命令相比有何特殊之处吗

论坛徽章:
0
6 [报告]
发表于 2015-04-27 15:16 |只看该作者
回复 4# jason680

你好~,需求是命令行下实现join,只是该脚本可以实现更多的功能,比如left outer join(也许shell中join中可以实现,只是举例)
问题就是:如何在该使用文件的地方,用命令替换

抛开刚才那个问题的话:
cat A.txt
如果A.txt是 cat B.txt | grep 123 的结果
若不用临时文件,如何实现 cat B.txt | grep 123 对cat A.txt 中 A.txt的替换

感谢~
   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
7 [报告]
发表于 2015-04-27 15:21 |只看该作者
回复 6# whq39
  1. cat <(cat B.txt | grep 123)
复制代码

论坛徽章:
0
8 [报告]
发表于 2015-04-27 16:29 |只看该作者
回复 7# Shell_HAT


感谢回复~
cat hive_activity.txt | comp mysql_activity.txt -k1:1
想替换mysql_activity.txt,用你给的方法cat <(cat B.txt | grep 123)还是不行

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
9 [报告]
发表于 2015-04-27 16:38 |只看该作者
回复 8# whq39


cat hive_activity.txt | comp <(cat B.txt | grep 123) -k1:1

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
10 [报告]
发表于 2015-04-27 16:42 |只看该作者
回复 6# whq39

I'm sorry. It's hard to know what you said

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

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP