awk,使用特定列的相同值保存行
我想用AWK比较第7列中的行之间的值,并用第7列中相同的值将行保存在一个文件中。然后当值更改为将其保存到新文件中时awk,使用特定列的相同值保存行,awk,Awk,我想用AWK比较第7列中的行之间的值,并用第7列中相同的值将行保存在一个文件中。然后当值更改为将其保存到新文件中时 chr18 57650444 57650444 0 3.5 ST mW1 chr18 57646426 57803315 chr18 57668180 57668180 0 2.4 ST mW1 chr18 57646426 57803315 chr18 57668180 57668180 0
chr18 57650444 57650444 0 3.5 ST mW1 chr18 57646426 57803315
chr18 57668180 57668180 0 2.4 ST mW1 chr18 57646426 57803315
chr18 57668180 57668180 0 2.4 ST mW2 chr18 57646426 57803315
chr18 57650444 57650444 0 3.5 ST mW1 chr18 57646426 57803315
chr18 57650444 57650444 0 3.5 ST mE3 chr18 57646426 57803315
我必须使用隔离列7,如awk'{print$7}'
,同时读取行NR
和NR-1
,最后比较第一列和第二列之间第七列的值,并使用“if”,“如果(NR-1==NR)print NR}”inputfile>“value\u column\u 7”。txt
... 我认为像这样的事情
我想要什么
filename: mW1.txt
chr18 57650444 57650444 0 3.5 ST mW1 chr18 57646426 57803315
chr18 57668180 57668180 0 2.4 ST mW1 chr18 57646426 57803315
chr18 57650444 57650444 0 3.5 ST mW1 chr18 57646426 57803315
filename: mW2.txt
chr18 57668180 57668180 0 2.4 ST mW2 chr18 57646426 57803315
filename: mE3.txt
chr18 57650444 57650444 0 3.5 ST mE3 chr18 57646426 57803315
你能帮我把它们组合起来吗?
谢谢最简单的方法是写入由
$7
定义的文件:
$ awk '{
file=$7 ".txt" # name the file
print >> file # append to file
}' file
如果开始用完FD或文件描述符,则需要开始担心close()
ing文件:
$ awk '{
if($7!=p) { # if $7 as changed since previous record
close(file) # close the previous file
file=$7 ".txt" # name a new file based on $7
}
print >> file # append to file in case of recurring $7
p=$7 # remember $7 for next record
}' file
请在您的问题中发布示例预期输出,然后让我们知道好吗?编辑,谢谢!我还改变了一个例子,为什么你要比较什么?只需将行写入由
$7
定义的适当文件,基本上是{print>$7.txt”}
如果您的FD开始用完,请应用close()
。詹姆斯·布朗是您的完美代码!!!我把事情弄得太复杂了!非常感谢!查看您的问题历史,我认为您应该看到: