awk if/else条件和打印最后一行
我的两个示例文件如下所示: F1 F2 我需要awk脚本来打印第一行/最后一行,具体取决于awk if/else条件和打印最后一行,awk,Awk,我的两个示例文件如下所示: F1 F2 我需要awk脚本来打印第一行/最后一行,具体取决于$2字段(如果$2==“+”--打印第一行;否则--打印最后一行) 我设法编写了打印第一行的awk脚本,但如何添加else以打印最后一行呢 awk '{if (NR == 1 && $2 == "+") print}' F2 Yellow + 如何修改此代码以输入F1并打印绿色- 也许可以添加如下内容:awk'{if(NR==1&&$2==“+”)print;else{END print}
$2字段
(如果$2==“+”
--打印第一行;否则
--打印最后一行)
我设法编写了打印第一行的awk脚本,但如何添加else
以打印最后一行呢
awk '{if (NR == 1 && $2 == "+") print}' F2
Yellow +
如何修改此代码以输入F1
并打印绿色-
也许可以添加如下内容:
awk'{if(NR==1&&$2==“+”)print;else{END print}}
要打印最后一行,每次只需将其存储到变量中,然后在文件处理结束时打印最后一个值。您可以使用一种特殊的模式/条件END
($2 == "-") { line = $0 }
END { if (line != "") print line }
要打印最后一行,每次只需将其存储到变量中,然后在文件处理结束时打印最后一个值。您可以使用一种特殊的模式/条件
END
($2 == "-") { line = $0 }
END { if (line != "") print line }
您可以使用端块获得它:
awk 'NR == 1 && $2 == "+" {print $0;} {l=$0;f=$2;} END{if (f == "-"){print l;}}' F1
我们将条件NR==1&&$2==“+”
保留在模式块(AWK
style)中,而不是使用if语句
然后可以添加另一个块,使整行(l变量)和第二个字段(f变量)在每一新行中覆盖每个变量。因此,在结束块中,您将拥有
l
中最后一行的整行和f
中最后一行的第二个字段。然后,您可以根据f
的值打印l
,您可以使用端块获得它:
awk 'NR == 1 && $2 == "+" {print $0;} {l=$0;f=$2;} END{if (f == "-"){print l;}}' F1
awk 'NR == 1 && $2 == "+" { print ; p=1 ; exit }
END { if (p != 1) { print $0 } }' INPUTFILE
我们将条件NR==1&&$2==“+”
保留在模式块(AWK
style)中,而不是使用if语句
然后可以添加另一个块,使整行(l变量)和第二个字段(f变量)在每一新行中覆盖每个变量。因此,在结束块中,您将拥有l
中最后一行的整行和f
中最后一行的第二个字段。然后,您可以根据f
的值打印l
awk 'NR == 1 && $2 == "+" { print ; p=1 ; exit }
END { if (p != 1) { print $0 } }' INPUTFILE
注意:这假设,如果第一行不包含“+”
,则必须打印最后一行
注意:假设第一行不包含“+”,则必须打印最后一行。Short hacky awk
awk 'NR==($2=="+"){exit}END{print}' file
如果第一行包含+
或最后一行短的hacky awk,则将打印第一行
awk 'NR==($2=="+"){exit}END{print}' file
如果第一行包含+
或最后一行,则将打印第一行