首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >提取与另一个文件中的单词列表匹配的行。

提取与另一个文件中的单词列表匹配的行。
EN

Unix & Linux用户
提问于 2018-07-25 18:59:34
回答 2查看 13.4K关注 0票数 8

我有一份文件,里面有以下几行:

代码语言:javascript
复制
ATM 1434.972183
BMPR2 10762.78192
BMPR2 10762.78192
BMPR2 1469.14535
BMPR2 1469.14535
BMPR2 1738.479639
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628
BMS1P17 1249.75
BMS1P17 1249.75
BMS1P17 1606.821429
BMS1P17 1606.821429
BMS1P17 1666.333333
BMS1P17 1666.333333
BMS1P17 2108.460317
BMS1P17 2108

文件2有一个单词列表:

代码语言:javascript
复制
ATM
BMS1

因此,输出将如下所示:

代码语言:javascript
复制
ATM 1434.972183
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628

我知道这确实是一个重复的问题,但我尝试了所有类型的grepsedawk,也许这个很小的例子会适用于你们,但是我有一个非常大的文件> 1M lines,以前的所有方法都没有帮助。

它返回包含这些单词的部分行,尽管file 2中还有与file 1中的行匹配的其他单词。

EN

回答 2

Unix & Linux用户

发布于 2018-07-25 19:03:46

代码语言:javascript
复制
grep -Fw -f words myfile

这将提取myfile中包含文件words anywhere中的单词的行。

words中的字符串由于-F选项而被视为固定字符串(而不是正则表达式),-w选项确保我们只获得包含完全相同单词的行(不允许在单词中匹配子字符串)。单词是一组字母数字字符和下划线字符的连续字符序列。

文件words中的单词最多列在单独的行中。

票数 7
EN

Unix & Linux用户

发布于 2018-07-25 19:52:22

试试join命令:

代码语言:javascript
复制
join file1 file2

ATM 1434.972183
BMS1 4907.841667
BMS1 4907.841667
BMS1 880.4532628
BMS1 880.4532628
票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/458431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档