理解awk脚本
我有下面的awk脚本,我不知道它做什么或如何正确执行它理解awk脚本,awk,Awk,我有下面的awk脚本,我不知道它做什么或如何正确执行它 $ awk 'BEGIN{ first_start=$2; old_start=first_start; } { chr=$1; current_start=$2; if (current_start > (old_start + 1)) { print chr"\t"first_start"\t&qu
$ awk 'BEGIN{
first_start=$2;
old_start=first_start;
}
{
chr=$1;
current_start=$2;
if (current_start > (old_start + 1)) {
print chr"\t"first_start"\t"old_start;
first_start=current_start;
old_start=first_start;
}
else {
old_start=current_start;
}
}
END {
print chr"\t"first_start"\t"old_start;
}' pileup.txt
输入的格式应为:
NC_000001.10 11456 A 0 * *
NC_000001.10 11467 A 1 , E
NC_000001.10 250133 t 2 .. EA
NC_000001.10 250164 t 2 .. EE
NC_000001.10 250169 t 2 .. EE
我试着用awk-f pilleup\u to_bed.awk
执行它,结果
awk: pileup_to_bed.awk:1: $ awk 'BEGIN{
awk: pileup_to_bed.awk:1: ^ invalid char ''' in expression
awk: pileup_to_bed.awk:1: $ awk 'BEGIN{
awk: pileup_to_bed.awk:1: ^ syntax error
当您将代码放在
.awk
文件中时,您不需要为代码引用,
(据我所知,这个问题应该是这样的(awk
文件名是script.awk
)。我正在删除BEGIN{first_start=$2;old_start=first_start}
,因为将其保留在BEGIN
部分没有意义,因为其中没有任何行被读取,感谢Ed sir在这里指出它
{
chr=$1;
current_start=$2;
if (current_start > (old_start + 1)) {
print chr"\t"first_start"\t"old_start;
first_start=current_start;
old_start=first_start;
}
else {
old_start=current_start;
}
}
END {
print chr"\t"first_start"\t"old_start;
}
当我在上面跑的时候,就像:
awk -f script.awk Input_file
我得到以下输出:
NC_000001.10
NC_000001.10 11456 11456
NC_000001.10 11467 11467
NC_000001.10 250133 250133
NC_000001.10 250164 250164
NC_000001.10 250169 250169
当您将代码放在
.awk
文件中时,您不需要为代码引用,
(据我所知,这个问题应该是这样的(awk
文件名是script.awk
)。我正在删除BEGIN{first_start=$2;old_start=first_start}
,因为将其保留在BEGIN
部分没有意义,因为其中没有任何行被读取,感谢Ed sir在这里指出它
{
chr=$1;
current_start=$2;
if (current_start > (old_start + 1)) {
print chr"\t"first_start"\t"old_start;
first_start=current_start;
old_start=first_start;
}
else {
old_start=current_start;
}
}
END {
print chr"\t"first_start"\t"old_start;
}
当我在上面跑的时候,就像:
awk -f script.awk Input_file
我得到以下输出:
NC_000001.10
NC_000001.10 11456 11456
NC_000001.10 11467 11467
NC_000001.10 250133 250133
NC_000001.10 250164 250164
NC_000001.10 250169 250169
当我使用
awk-f script.awk pileup执行时,我得到awk:script.awk:1:cat script.awk awk:script.awk:1:^语法错误
@EliranTurgeman,无需将cat script.awk
放在文件中,我提到要显示内容,请删除该行,然后您可以尝试执行它,然后让我知道它是如何运行的?当我使用awk-f script.awk pileup执行时,我得到awk:script.awk:1:cat script.awk:script.awk:1:^语法错误
@EliranTurgeman,无需将cat script.awk
放在.awk
文件中,我提到要显示内容,删除那一行,然后你可以尝试执行它,让我知道它是如何运行的?现在还不清楚你的代码应该做什么。如果您的问题是提供给定示例输入的预期输出,那么我们可以帮助您。您的代码应该做什么还不清楚。如果您希望您的问题提供给定示例输入的预期输出,那么我们可以帮助您。