相关疑难解决方法(0)

输出两个文本文件的公共行(相似性)(diff 的反义词)?

Diff 是一个很好的工具来显示两个文件之间的变化。但是如何显示两个文本文件的相似性(同时忽略差异)?

即样本输入:

a:
Foo Bar
X
Hello
World
42

b:
Foo Baz
Hello
World
23
Run Code Online (Sandbox Code Playgroud)

伪输出(类似这样):

@@ 2,3
=Hello World
Run Code Online (Sandbox Code Playgroud)

仅对两个文件进行排序并使用 comm 是不够的,因为在这种情况下,行信息会丢失。

command-line shell diff

28
推荐指数
4
解决办法
4万
查看次数

查找两个文件中的行的交点

如果我有两个文件(单列),一个像这样(file1)

34
67
89
92
102
180
blue2
3454
Run Code Online (Sandbox Code Playgroud)

和第二个文件(file2)

23
56
67
69
102
200
Run Code Online (Sandbox Code Playgroud)

如何找到两个文件(交集)中共有的元素?此示例中的预期输出是

67
102
Run Code Online (Sandbox Code Playgroud)

请注意,每个文件中的项目(行)数不同。数字和字符串可以混合使用。它们可能不一定要排序。每个项目只出现一次。

更新:

根据以下一些答案进行时间检查

# generate some data
>shuf -n2000000 -i1-2352452 > file1
>shuf -n2000000 -i1-2352452 > file2

#@ilkkachu
>time (join <(sort "file1") <(sort "file2") > out1)
real    0m15.391s
user    0m14.896s
sys     0m0.205s

>head out1
1
10
100
1000
1000001

#@Hauke
>time (grep -Fxf "file1" "file2" > out2)
real    0m7.652s
user    0m7.131s
sys     0m0.316s

>head out2
1047867
872652
1370463
189072 …
Run Code Online (Sandbox Code Playgroud)

sed awk text-processing

24
推荐指数
3
解决办法
2万
查看次数

循环 sed 以从文本文件中的字符串列表中删除带有字符串的行

我有这个 sed 脚本,当我的 OTU 表中找到文本文件中列出的物种时,我正在删除 OTU 表中的整行。

我现在拥有但不起作用的脚本如下,但我无法使其工作。无论如何,如果您能尽快帮助我,将不胜感激。

(阅读每一行,在我的表中搜索并删除行,infile)

for i in $(cat /my/path/species.txt); do 
    sed -i '/"$i"/d' /my/path/ITS.OTU.table.tsv
done
Run Code Online (Sandbox Code Playgroud)

非常感谢

sed text-processing

0
推荐指数
1
解决办法
8680
查看次数

标签 统计

sed ×2

text-processing ×2

awk ×1

command-line ×1

diff ×1

shell ×1