我有 file1 喜欢:
0 AFFX-SNP-000541 NA
0 AFFX-SNP-002255 NA
1 rs12103 0.6401
1 rs12103_1247494 0.696
1 rs12142199 0.7672
Run Code Online (Sandbox Code Playgroud)
还有一个文件2:
0 AFFX-SNP-000541 1
0 AFFX-SNP-002255 1
1 rs12103 0.5596
1 rs12103_1247494 0.5581
1 rs12142199 0.4931
Run Code Online (Sandbox Code Playgroud)
并想要一个 file3 ,这样:
0 AFFX-SNP-000541 NA 1
0 AFFX-SNP-002255 NA 1
1 rs12103 0.6401 0.5596
1 rs12103_1247494 0.696 0.5581
1 rs12142199 0.7672 0.4931
Run Code Online (Sandbox Code Playgroud)
这意味着将 file2 的第 4 列按第 2 列的名称放入 file1。
我有两个文件 _jeter3.txt 和 _jeter1.txt
我检查过它们都使用第 20 列排序 sort -c
sort -t ' ' -c -k20,20 _jeter3.txt
sort -t ' ' -c -k20,20 _jeter1.txt
#no errors
Run Code Online (Sandbox Code Playgroud)
但是当我想要join两个文件时出现错误,它说第二个文件没有排序:
join -t ' ' -1 20 -2 20 _jeter1.txt _jeter3.txt > /dev/null
join: File 2 is not in sorted order
Run Code Online (Sandbox Code Playgroud)
我不明白为什么。
cat /etc/*-release #FYI
openSUSE 11.0 (i586)
VERSION = 11.0
Run Code Online (Sandbox Code Playgroud)
更新:使用 ' sort -f' 和join -i(均不区分大小写)修复了问题。但这并不能解释我最初的问题。
更新:排序和连接的版本:
> join --version
join (GNU coreutils) 6.11
Copyright (C) 2008 …Run Code Online (Sandbox Code Playgroud) 文件1.txt
id No
gi|371443199|gb|JH556661.1| 7907290
gi|371443198|gb|JH556662.1| 7573913
gi|371443197|gb|JH556663.1| 7384412
gi|371440577|gb|JH559283.1| 6931777
Run Code Online (Sandbox Code Playgroud)
文件2.txt
id P R S
gi|367088741|gb|AGAJ01056324.1| 5 5 0
gi|371443198|gb|JH556662.1| 2 2 0
gi|367090281|gb|AGAJ01054784.1| 4 4 0
gi|371440577|gb|JH559283.1| 21 19 2
Run Code Online (Sandbox Code Playgroud)
输出.txt
id P R S NO
gi|371443198|gb|JH556662.1| 2 2 0 7573913
gi|371440577|gb|JH559283.1| 21 19 2 6931777
Run Code Online (Sandbox Code Playgroud)
File1.txt 有两列,File2.txt 有四列。我想加入两个具有唯一 id 的文件(array[1] 应该在两个文件(file1.txt 和 file2.txt)中匹配,并只给出匹配的 id(参见 output.txt)。
我试过了join -v <(sort file1.txt) <(sort file2.txt)。请求任何有关 awk 或 join 命令的帮助。
我有一个像下面这样的文件..
abc, 12345
def, text and nos
ghi, something else
jkl, words and numbers
abc, 56345
def, text and nos
ghi, something else
jkl, words and numbers
abc, 15475
def, text and nos
ghi, something else
jkl, words and numbers
abc, 123345
def, text and nos
ghi, something else
jkl, words and numbers
Run Code Online (Sandbox Code Playgroud)
我想将其转换(加入)为:
abc, 12345, 56345, 15475, 123345
def, text and nos, text and nos,text and nos,text and nos
ghi, something else, something else, something else, something else
jkl, …Run Code Online (Sandbox Code Playgroud) 我有两个文件,分别包含大约 12900 和 4400 个条目,我想加入。这些文件包含全球所有陆基气象观测站的位置信息。最大的文件每两周更新一次,较小的文件大约一年更新一次。原始文件可以在这里找到(http://www.wmo.int/pages/prog/www/ois/volume-a/vola-home.htm和 http://weather.rap.ucar.edu/surface/站.txt)。我已经使用一些混合的 awk、sed 和 bash 脚本操纵了我拥有的文件。我使用这些文件使用 GEMPAK 包来可视化数据,该包可从 Unidata 免费获得。最大的文件可以与 GEMPAK 一起使用,但不能发挥其全部功能。为此,需要加入。
文件 1 包含气象观测站的位置信息,其中前 6 位数字是唯一的站标识符。不同的参数(站号、站名、国家代码、纬度经度和站高程)仅由其在线路中的位置定义,即没有选项卡。
060090 AKRABERG FYR DN 6138 -666 101
060100 VAGA FLOGHAVN DN 6205 -728 88
060110 TORSHAVN DN 6201 -675 55
060120 KIRKJA DN 6231 -631 55
060130 KLAKSVIK HELIPORT DN 6221 -656 75
060160 HORNS REV A DN 5550 786 21
060170 HORNS REV B DN 5558 761 10
060190 SILSTRUP DN 5691 863 0
060210 …Run Code Online (Sandbox Code Playgroud) 我会用一个例子来问我的问题。我有2个文件:
文件#1:
118D FC300_R5_TP FX.B 32775 2112 6 2038 6 2112 0
118E FC300_R5_TP FX.B 32775 2136 7 2065 6 2136 0
118F FC300_R5_TP FX.B 32775 2124 6 2064 6 2124 0
1190 FC300_R5_TP FX.B 819210 814632 99 814609 99 814632 0
1191 FC300_R5_TP FX.B 819210 104100 13 103714 13 104100 0
1192 FC300_R5_TP FX.B 1638420 1609476 98 1609402 98 1609476 0
1196 FC300_R5_TP FX.B 1638420 1638432 100 1638379 100 1638432 0
119A FC300_R5_TP FX.B 3276840 3271776 100 3271698 100 …Run Code Online (Sandbox Code Playgroud) 我有两个文件:
oldlist- 这包含文件列表和每个文件的 md5 哈希。这是一年前生成的。newlist- 这还包含文件列表和每个文件的 md5 哈希值。但是,一些文件已更改(例如,它们的 md5 哈希值不同)并添加了一些新文件。我想查看oldlist和之间的所有差异newlist,但我想忽略oldlist.
也就是说,我不关心新文件。我只想比较每个旧文件的 md5 哈希值,以便我可以查看去年是否有任何文件发生了更改。
我想写一个shell script得到两个文件Aand B,并得到这样的结果:
文件A:
user_a tel_a addr_a
user_b tel_b addr_b
Run Code Online (Sandbox Code Playgroud)
文件B:
process_1 user_a
process_2 user_a
process_3 user_b
Run Code Online (Sandbox Code Playgroud)
结果:
user_a process_1 tel_a addr_a
user_a process_2 tel_a addr_a
user_b process_3 tel_b addr_b
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?awk或者是其他东西?
我在文件 A 中有两个文件,另一个文件 B 中有序列号,有很多列,第一列是序列号,我想得到一个文件,其中包含 B 中的所有行,其中的序列号在我怎样才能做到这一点?谢谢
像文件A
1
3
8
9
20
Run Code Online (Sandbox Code Playgroud)
文件B
1 kfjk 3243424
2 fkdkf 23543592
3 iefjk 21493402
7 dlafdl 23435231
8 kfkdlkf 309834
Run Code Online (Sandbox Code Playgroud) 我有这样的file1:
CHR SNP TEST A1 A2 GENO O(HET) E(HET) P
0 AFFX-SNP-000541 ALL 0 0 0/0/0 nan nan 1
0 AFFX-SNP-000541 AFF 0 0 0/0/0 nan nan NA
0 AFFX-SNP-000541 UNAFF 0 0 0/0/0 nan nan NA
0 AFFX-SNP-002255 ALL 0 0 0/0/0 nan nan 1
0 AFFX-SNP-002255 AFF 0 0 0/0/0 nan nan NA
0 AFFX-SNP-002255 UNAFF 0 0 0/0/0 nan nan NA
1 rs12103 ALL C T 55/250/317 0.4019 0.4113 0.5596
1 rs12103 AFF C T 0/0/0 nan …Run Code Online (Sandbox Code Playgroud)