比较两个文件中的行
我们如何使用 shell 脚本比较两个文件中的行。
我想将一个文件中的行与另一个文件中的行进行比较。diff
将一次给出两个文件中的所有差异。我希望将第一个文件中的一行与所有行进行比较在第二个文件中并获取公共行作为输出。与第二个文件中存在的行的行号。
how could we compare lines in two files using a shell script.
I want to compare line in one file with the line in other.diff
will give me all the differences in two files at a time.i want a line in the first file to be compared with all the lines in the second file and get the common lines as the output. with the line numbers where the lines are present in the second file.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
我不确定您到底在问什么,但是怎么样:
这将为您提供 FILE2 中不包含 FILE1 中第一行的编号行。
I am not sure exactly what you are asking, but how about:
This will give you the numbered lines in FILE2 that do not contain the 1st line in FILE1.
将显示 file1 和 file2 共有的行
will show the lines common to both file1 and file2
grep -n
是在您的情况下使用的工具。作为模式,您将要在第二个文件中查找的行放入第一个文件中。让您的模式以 ^ 开头,以 $ 结尾,并在其周围加上引号。grep -n
is the tool to use in your case. As the pattern, you put the line in the first file that you want to find in the second one. Make your pattern start with ^ and end with $ and put quotes around it.我认为这已经很接近了。
I think this gets close.
这一点也不优雅,但很简单
let
filea
be:and
fileb
be:then:
将输出:
This is not elegant at all, but it is simple
let
filea
be:and
fileb
be:Then:
Will output:
您可以使用 comm 命令来比较 2 个文件,该文件以 SET 操作格式给出输出
像 a - b、交集 b 等。
这给出了两个文件中的公共行。
comm -12 <(排序第一个.txt | uniq) <(排序第二个.txt | uniq)
语法
comm [选项]... 文件 1 文件 2
选项
-1 抑制 file1 特有的行
-2 抑制 file2 特有的行
-3 抑制两个文件中出现的
行 文件名“-”表示标准输入。
you can use comm command to compare 2 files which gives the output in a SET operations format
like a - b, a intersection b etc.
this gives the common lines in both files.
comm -12 <(sort first.txt | uniq) <(sort second.txt | uniq)
Syntax
comm [options]... File1 File2
Options
-1 suppress lines unique to file1
-2 suppress lines unique to file2
-3 suppress lines that appear in both files
A file name of `-' means standard input.
将下面的代码粘贴到名为 intersect.sh 的文件中,
然后确保您对该文件具有执行权限,
然后运行此命令,替换两个文件的名称
paste the code below into a file called intersect.sh
then make sure you have execute permissions on the file
then run this command, substituting the names of your two files