Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在unix中使用awk复制文件中的文件项_Unix_Awk - Fatal编程技术网

在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;i
awk-vchr1=a-vn=3'{print;}substr($0,0,1)==chr1{for(i=0;i
awk-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