AWK - 如何获得它们之间相等的值?如果... $1== $1?
AWK - How can I get the values that it equal among them? if ... $1== $1?
我正在处理 DNA 序列列表。我想获得所有同名的序列($1)。我正在考虑使用 if ( == "")
。但这不起作用。
result_file:
name1 number1 number2 sequenceofname1
name1 number3 number4 sequenceofname1
脚本:
awk '{if ( == "") printf("%s_%s_%s \t%s\n", ,,,);}' <result_file >file.txt
如何将
传递给我的 awk 命令?
你可以使用 -v 选项
awk -v name="name1" '{
if ( == name) printf("%s_%s_%s \t%s\n", ,,,);
}' result_file > file.txt
或者,如果此语句在脚本中
awk -v name="" '{
if ( == name) printf("%s_%s_%s \t%s\n", ,,,);
}' result_file > file.txt
-v var=val,在程序开始执行之前,将值val赋给变量var。此类变量值可用于 AWK 程序的 BEGIN 块。
如果我没理解错的话,您想使用 shell 脚本中的 </code> 作为其中 <code>awk
命令的参数。
在这种情况下,您不想引用要扩展的 </code>,而是引用 <code>awk
命令的其余部分。一种可能是双引号命令:
awk "{if ($1 == \"\") printf(\"%s_%s_%s \t%s\n\", $1,$2,$3,$4);}"
管理所有反斜杠会变得很困难,因此您可能更喜欢将大部分命令单引号,但将要扩展的部分双引号:
awk '{if ( == "'""'") printf("%s_%s_%s \t%s\n", ,,,);}'
读起来有点棘手 - 关键位分为 '...( == "'
""
'")...'
。所以有一个双引号是 Awk 命令的一部分,还有一个用于 shell,以将 </code> 保持在一个片段中。</p>
<p>哦,不需要调用 <code>cat
- 只需提供文件作为输入:
awk ... <result_file >file.txt
我正在处理 DNA 序列列表。我想获得所有同名的序列($1)。我正在考虑使用 if ( == "")
。但这不起作用。
result_file:
name1 number1 number2 sequenceofname1 name1 number3 number4 sequenceofname1
脚本:
awk '{if ( == "") printf("%s_%s_%s \t%s\n", ,,,);}' <result_file >file.txt
如何将 传递给我的 awk 命令?
你可以使用 -v 选项
awk -v name="name1" '{
if ( == name) printf("%s_%s_%s \t%s\n", ,,,);
}' result_file > file.txt
或者,如果此语句在脚本中
awk -v name="" '{
if ( == name) printf("%s_%s_%s \t%s\n", ,,,);
}' result_file > file.txt
-v var=val,在程序开始执行之前,将值val赋给变量var。此类变量值可用于 AWK 程序的 BEGIN 块。
如果我没理解错的话,您想使用 shell 脚本中的 </code> 作为其中 <code>awk
命令的参数。
在这种情况下,您不想引用要扩展的 </code>,而是引用 <code>awk
命令的其余部分。一种可能是双引号命令:
awk "{if ($1 == \"\") printf(\"%s_%s_%s \t%s\n\", $1,$2,$3,$4);}"
管理所有反斜杠会变得很困难,因此您可能更喜欢将大部分命令单引号,但将要扩展的部分双引号:
awk '{if ( == "'""'") printf("%s_%s_%s \t%s\n", ,,,);}'
读起来有点棘手 - 关键位分为 '...( == "'
""
'")...'
。所以有一个双引号是 Awk 命令的一部分,还有一个用于 shell,以将 </code> 保持在一个片段中。</p>
<p>哦,不需要调用 <code>cat
- 只需提供文件作为输入:
awk ... <result_file >file.txt