0
我有两个文本文件:查找两个文本文件的重复单词,使用命令行
f1.txt
boom Boom pow
Lazy dog runs.
The Grass is Green
This is TEST
Welcome
和
f2.txt
Welcome
I am lazy
Welcome, Green
This is my room
Welcome
bye
在Ubuntu的命令行我想:
awk 'BEGIN {RS=" "}FNR==NR {a[$1]=NR; next} $1 in a' f1.txt f2.txt
和获得输出:
Green
This
is
我所需的输出是:
lazy
Green
This is
Welcome
说明:我想比较两个txt文件,一行行。然后我想输出所有重复的单词。比赛应该不区分大小写。此外,逐行比较会更好,而不是在整个f2.txt文件中查找来自f1.txt的匹配。例如,如果它是在第6行而不是在f2.txt中的第5行,则“欢迎”这个词不应该在期望的输出中
谢谢你,你是惊人的!如果我想用RegEx来描述“单词”是什么?就我而言,它是'\ w *( - )*(\ w +)'。因为当我接收到用来运行这个命令的大量复杂文本的输出时,并非所有东西都是一个字 – pnb1
您可以通过给awk提供'-F'选项和一个合适的正则表达式来调整字段分隔符。该行将在该字段分隔符的出现处被拆分为字段。例如,用'-F'[,:#] +'',你可以将'foo bar,#baz :: qux'解析成'foo','bar','baz'和'qux'四个字段。 – Wintermute
我没有先看这个,看看我想出了什么,以及我最终以几乎相同的解决方案。唯一真正的功能差异是我有'BEGIN {FS =“[^ [:alpha:]] +”}'来处理输入中的逗号和句点,因为我认为单词只包含字母字符(OP可以更正如果这是错误的,添加新的“单词”组成字符)。 –