我有两个制表符分隔的文件,如下所示:
文件 1:
NC_008146.1 WP_011558474.1 1155234 1156286 44173
NC_008146.1 WP_011558475.1 1156298 1156807 12
NC_008146.1 WP_011558476.1 1156804 1157820 -3
NC_008705.1 WP_011558474.1 1159543 1160595 42748
NC_008705.1 WP_011558475.1 1160607 1161116 12
NC_008705.1 WP_011558476.1 1161113 1162129 -3
NC_009077.1 WP_011559727.1 2481079 2481633 8
NC_009077.1 WP_011854835.1 1163068 1164120 42559
NC_009077.1 WP_011854836.1 1164127 1164636 7
Run Code Online (Sandbox Code Playgroud)
文件2:
NC_008146.1 GCF_000014165.1_ASM1416v1_protein.faa
NC_008705.1 GCF_000015405.1_ASM1540v1_protein.faa
NC_009077.1 GCF_000016005.1_ASM1600v1_protein.faa
Run Code Online (Sandbox Code Playgroud)
我想将 file1 的第 1 列与 file2 匹配,并用文件 2 的相应第 2 列条目替换自身。输出将如下所示:
GCF_000014165.1_ASM1416v1_protein.faa WP_011558474.1 1155234 1156286 44173
GCF_000014165.1_ASM1416v1_protein.faa WP_011558475.1 1156298 1156807 12
GCF_000014165.1_ASM1416v1_protein.faa WP_011558476.1 1156804 1157820 …Run Code Online (Sandbox Code Playgroud) 我有一个制表符分隔的文件,如下所示:
NZ_CP023599.1 WP_003911075.1 302845 305406
NZ_CP023599.1 WP_003898428.1 471171 472583
NZ_CP023599.1 WP_003402248.1 534387 535157
NZ_CP023599.1 WP_003402301.1 552556 553950
NZ_CP023599.1 WP_003402318.1 558837 559697
Run Code Online (Sandbox Code Playgroud)
我需要从下一行的第 3 列中的数字中减去每行第 4 列中的数字,然后将下一行中的差值打印为第 5 列。
输出将如下所示:
NZ_CP023599.1 WP_003911075.1 302845 305406
NZ_CP023599.1 WP_003898428.1 471171 472583 165765
NZ_CP023599.1 WP_003402248.1 534387 535157 61804
NZ_CP023599.1 WP_003402301.1 552556 553950 17399
NZ_CP023599.1 WP_003402318.1 558837 559697 4887
Run Code Online (Sandbox Code Playgroud)
我如何使用 awk 解决这个问题?
假设我有两个文件,如下所示:
$ cat search_file.txt
This line contains kwd1.
This line contains kwd2.
This line contains no match.
This line contains no match.
This line contains kwd5.
Run Code Online (Sandbox Code Playgroud)
$ cat search_kwd.sh
grep kwd1 search_file.txt
grep kwd2 search_file.txt
grep kwd3 search_file.txt
grep kwd4 search_file.txt
grep kwd5 search_file.txt
Run Code Online (Sandbox Code Playgroud)
当我运行 search_kwd.sh 时,我得到:
$ sh search_kwd.sh
This line contains kwd1.
This line contains kwd2.
This line contains kwd5.
Run Code Online (Sandbox Code Playgroud)
我想string在 grep 没有匹配时打印一个。输出将如下所示:
$ sh search_kwd.sh
This line contains kwd1.
This line contains kwd2.
string
string …Run Code Online (Sandbox Code Playgroud) 假设我有多个文件,其.ext扩展名包含多行。我需要打印包含所有3个关键字的文件名:kwd1,kwd2,和kwd3。
我该怎么做?