Awk If-Elseif-If 块
Awk If-Elseif-If Block
NR>NRMIN{
if( == "Leu") {
if( == "CD1" || == "HD11" || == "HD12" || == "HD13") {
next;
}
}
elseif( == "Val") {
if( == "CD1" || == "HD11" || == "HD12" || == "HD13") {
next;
}
}
else {
print;
}
}
我打算有选择地打印 space 分隔文件的行。
请告诉我为什么上面的代码在 gawk -f FILE_Modifier.awk NRMIN = 90 FILE > NEWFILE
时出错
错误信息
gawk: FILE_Modifier.awk:7: elseif( == "Val") {
gawk: FILE_Modifier.awk:7: ^ syntax error
gawk: FILE_Modifier.awk:12: else {
gawk: FILE_Modifier.awk:12: ^ syntax error
没有elseif
。无论如何,您可以将脚本重写为:
awk -v nrmin=90 '(NR > nrmin) && !(( ~ /^(Leu|Val)$/) && ( ~ /^(CD1|HD11|HD12|HD13)$/))' file
不要使用全部大写的变量名以避免与内置名称发生冲突。除非有特殊原因,否则请使用 -v
预先设置变量。
NR>NRMIN{
if( == "Leu") {
if( == "CD1" || == "HD11" || == "HD12" || == "HD13") {
next;
}
}
elseif( == "Val") {
if( == "CD1" || == "HD11" || == "HD12" || == "HD13") {
next;
}
}
else {
print;
}
}
我打算有选择地打印 space 分隔文件的行。
请告诉我为什么上面的代码在 gawk -f FILE_Modifier.awk NRMIN = 90 FILE > NEWFILE
错误信息
gawk: FILE_Modifier.awk:7: elseif( == "Val") {
gawk: FILE_Modifier.awk:7: ^ syntax error
gawk: FILE_Modifier.awk:12: else {
gawk: FILE_Modifier.awk:12: ^ syntax error
没有elseif
。无论如何,您可以将脚本重写为:
awk -v nrmin=90 '(NR > nrmin) && !(( ~ /^(Leu|Val)$/) && ( ~ /^(CD1|HD11|HD12|HD13)$/))' file
不要使用全部大写的变量名以避免与内置名称发生冲突。除非有特殊原因,否则请使用 -v
预先设置变量。