AWK-如何获得它们之间相等的值?如果$1== $1?
我正在处理一系列的DNA序列。我想得到所有同名的序列($1)。我正在考虑使用AWK-如何获得它们之间相等的值?如果$1== $1?,awk,escaping,variable-expansion,Awk,Escaping,Variable Expansion,我正在处理一系列的DNA序列。我想得到所有同名的序列($1)。我正在考虑使用if($1==“$1”)。但这是行不通的 结果文件: 名称1编号1编号2序列名称1 名称1编号3编号4名称的顺序1 脚本: awk'{if($1==“$1”)printf(“%s\%s\%s\t%s\n”,$1,$2,$3,$4);}file.txt 如何将$1传递给我的awk命令?您可以使用-v选项 awk -v name="name1" '{ if ($1 == name) printf("%s_%s_%s \
if($1==“$1”)
。但这是行不通的
结果文件:
名称1编号1编号2序列名称1
名称1编号3编号4名称的顺序1
脚本:
awk'{if($1==“$1”)printf(“%s\%s\%s\t%s\n”,$1,$2,$3,$4);}file.txt
如何将$1
传递给我的awk命令?您可以使用-v选项
awk -v name="name1" '{
if ($1 == name) printf("%s_%s_%s \t%s\n", $1,$2,$3,$4);
}' result_file > file.txt
或者,如果此语句在脚本中
awk -v name="$1" '{
if ($1 == name) printf("%s_%s_%s \t%s\n", $1,$2,$3,$4);
}' result_file > file.txt
-v var=val,在程序开始执行之前,将值val赋给变量var。这些变量值可用于AWK程序的BEGIN块。您可以使用-v选项
awk -v name="name1" '{
if ($1 == name) printf("%s_%s_%s \t%s\n", $1,$2,$3,$4);
}' result_file > file.txt
或者,如果此语句在脚本中
awk -v name="$1" '{
if ($1 == name) printf("%s_%s_%s \t%s\n", $1,$2,$3,$4);
}' result_file > file.txt
-v var=val,在程序开始执行之前,将值val赋给变量var。这些变量值可用于AWK程序的BEGIN块。如果我理解正确,您希望使用shell脚本中的
$1
作为其中的AWK
命令的参数
在这种情况下,您不想引用要展开的$1
,而是引用awk
命令的其余部分。一种可能是双引号引用该命令:
awk "{if (\$1 == \"$1\") printf(\"%s_%s_%s \\t%s\\n\", \$1,\$2,\$3,\$4);}"
管理所有反斜杠可能会变得很困难,因此您可能更喜欢对命令的大部分内容使用单引号,而对要展开的部分使用双引号:
awk '{if ($1 == "'"$1"'") printf("%s_%s_%s \t%s\n", $1,$2,$3,$4);}'
读起来有点棘手-关键位被划分为“…($1==”
“$1”
”)…”
。因此,有一个双引号是Awk命令的一部分,还有一个是用于shell的,用于将$1
保存在一块中
哦,无需调用cat
——只需提供文件作为输入:
awk ... <result_file >file.txt
awk。。。file.txt
如果我理解正确,您希望使用shell脚本中的$1
作为其中awk
命令的参数
在这种情况下,您不想引用要展开的$1
,而是引用awk
命令的其余部分。一种可能是双引号引用该命令:
awk "{if (\$1 == \"$1\") printf(\"%s_%s_%s \\t%s\\n\", \$1,\$2,\$3,\$4);}"
管理所有反斜杠可能会变得很困难,因此您可能更喜欢对命令的大部分内容使用单引号,而对要展开的部分使用双引号:
awk '{if ($1 == "'"$1"'") printf("%s_%s_%s \t%s\n", $1,$2,$3,$4);}'
读起来有点棘手-关键位被划分为“…($1==”
“$1”
”)…”
。因此,有一个双引号是Awk命令的一部分,还有一个是用于shell的,用于将$1
保存在一块中
哦,无需调用cat
——只需提供文件作为输入:
awk ... <result_file >file.txt
awk。。。file.txt
$1==$1
将始终为真,因为它是一个标识。您需要存储要匹配的$1
的值,并将其与每行的$1
值进行比较。$1==$1
将始终为真,因为它是一个标识。您需要存储要匹配的$1
的值,并将其与每行的$1
值进行比较。1)-v name=“$1”
更好。2). 无用的cat1)-v name=“$1”
更好。2). 无用的猫