希望有人能帮我解决这个问题
我有 2 个文件,一个是 325 行长,一个是 361 行长。
这些文件的大部分内容相同,但第二个文件随机插入了额外的行。我只对额外的行感兴趣,我需要保留它们在文件中出现的顺序。
这些文件包含一个大约 31 行的重复段落 - 我知道这一段的第一行和最后一行,并且删除整个段落没有问题,但无法弄清楚如何。
即文件1
The quick brown
fox jumped
over the
lazy dog
The quick brown
fox jumped
over the
lazy dog
The quick brown
fox jumped
over the
lazy dog
即文件2
The quick brown
fox jumped
over the
lazy dog
sadhasdgh
qyyutrytkdaslksad
utyiuiytiuyo
The quick brown
fox jumped
over the
lazy dog
djakdjhgmv
asdjkljkgfyiyi
The quick brown
fox jumped
over the
lazy dog
jghytpuptou
我只需要按以下顺序输出额外的行:
sadhasdgh
qyyutrytkdaslksad
utyiuiytiuyo
djakdjhgmv
asdjkljkgfyiyi
jghytpuptou
任何帮助或建议将不胜感激,不幸的是,我不是 *nix 人 :(
我尝试了一些 diff 表达式和 comm 表达式,但无法得到我需要的。
最佳答案
试试这个神奇的命令:
diff file1.txt file2.txt | sed -n 's/^> \(.*\)/\1/p'
diff file1.txt file2.txt
应该输出类似的东西2c2
< fox jumped
---
> fox jumped
4a5,7
> sadhasdgh
> qyyutrytkdaslksad
> utyiuiytiuyo
8a12,13
> djakdjhgmv
> asdjkljkgfyiyi
12a18
> jghytpuptou
sed -n 's/^> \(.*\)/\1/p'
应该找到以 >
开头的行并输出没有 >
的行.这不起作用的可能原因是系统中 diff 的不同输出?
关于sed - 比较 2 个相似的文件,只输出差异,保留它们出现的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8579546/