在unix中使用awk复制文件中的文件项
我有一个文件,想复制一些符合某些条件的条目。 比如说在unix中使用awk复制文件中的文件项,unix,awk,Unix,Awk,我有一个文件,想复制一些符合某些条件的条目。 比如说 myfile chr1 a b c chr2 a b c chr3 x y z 我想复制第一列以chr1开头的行,我想复制n次 myfile chr1 a b c chr1 a b c chr1 a b c chr2 a b c chr3 x y z 像这样的东西可以吗 awk'{if($1==“chr1”){print;print;}print;}' 它会将以chr1开头的行再打印两次 …并使用for循环: awk'{if($1==“c
myfile
chr1 a b c
chr2 a b c
chr3 x y z
我想复制第一列以chr1开头的行,我想复制n次
myfile
chr1 a b c
chr1 a b c
chr1 a b c
chr2 a b c
chr3 x y z
像这样的东西可以吗
awk'{if($1==“chr1”){print;print;}print;}'
它会将以chr1开头的行再打印两次
…并使用for循环:
awk'{if($1==“chr1”){for(i=1;i像这样的东西可以吗
awk'{if($1==“chr1”){print;print;}print;}'
它会将以chr1开头的行再打印两次
…并使用for循环:
awk'{if($1==“chr1”){for(i=1;iawk-vchr1=a-vn=3'{print;}substr($0,0,1)==chr1{for(i=0;iawk-vchr1=a-vn=3'{print;}substr($0,0,1)==chr1{for(i=0;i
鉴于您在berdario回答中的评论,我想写:
awk '
NR == FNR {
cond[$1] = $2
next
}
$1 in cond {
for (i=1; i<cond[$i]; i++) print
}
{ print }
' conditions filename
awk'
NR==FNR{
条件[$1]=$2
下一个
}
一美元一美分{
对于(i=1;i鉴于您在berdario回答中的评论,我将写:
awk '
NR == FNR {
cond[$1] = $2
next
}
$1 in cond {
for (i=1; i<cond[$i]; i++) print
}
{ print }
' conditions filename
awk'
NR==FNR{
条件[$1]=$2
下一个
}
一美元一美分{
for(i=1;iThanks这很好。也可以将其放入for循环中吗?我有将近1000个条件。例如,我想复制chr1 3次,chr2 4次等等。awk应该为它在输入中接收到的每一行评估它的程序,因此,如果你可以从某处提取(行本身或其他地方)你需要复制的次数应该是金色的……你能详细说明一下你的例子吗?非常感谢:)但最后一个问题:)我在一个单独的文件中有这些条件,它告诉我条件和需要重复的次数。例如,chr1 3 chr2 5 chr3 5。因此我需要重复chr1 3次,chr2 5次和chr 3 5次。它们很多。是否可以从外部文件读取这些条件?我可能向aw要求太多了k命令?来自awk单行程序,是:)但是你可以将代码保存为awk脚本…我现在会尝试写一些东西好吧,这是一个愚蠢的问题,但我如何运行此代码?我将其保存为“测试”,将条件保存为“条件”。谢谢,这非常好。是否也可以将其放入for循环中?我有将近1000个条件。例如,我想复制chr1 3次,chr 2四次等等。awk应该为它在输入中收到的每一行评估它的程序,因此,如果你能从某个地方(该行本身或其他地方)提取你需要复制该行的次数,你应该是金色的……你能详细说明你的例子吗?非常感谢:)但最后一个问题:)我在一个单独的文件中有这些条件,它告诉我条件和需要重复的次数。例如,chr1 3 chr2 5 chr3 5。所以我需要重复chr1 3次,chr2 5次和chr 3 5次。它们很多。可以从外部文件读取这些条件吗?我可能会e从awk命令中要求太多?从awk一行程序中,是:)但您可以将代码保存为awk脚本…我现在会尝试写一些东西好吧,这是一个愚蠢的问题,但我如何运行此代码?我将其保存为“测试”,将条件保存为“条件”。
awk -v chr1=a -v n=3 '{ print; } substr($0,0,1) == chr1 { for (i = 0; i < n; ++i) print; }'
awk '
NR == FNR {
cond[$1] = $2
next
}
$1 in cond {
for (i=1; i<cond[$i]; i++) print
}
{ print }
' conditions filename