awk,使用特定列的相同值保存行

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

我想用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   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()
。詹姆斯·布朗是您的完美代码!!!我把事情弄得太复杂了!非常感谢!查看您的问题历史,我认为您应该看到: