【发布时间】:2013-02-04 05:17:23
【问题描述】:
我正在使用awk 打开多个文件并测试此命令
我正在尝试这个进行测试
awk -F"," 'NR==FNR{print FILENAME} {print FILENAME}' file2.txt file1.txt
第二个块应该在 NR != FNR 时执行,但对我来说它一直在执行。
这个语法正确吗
【问题讨论】:
我正在使用awk 打开多个文件并测试此命令
我正在尝试这个进行测试
awk -F"," 'NR==FNR{print FILENAME} {print FILENAME}' file2.txt file1.txt
第二个块应该在 NR != FNR 时执行,但对我来说它一直在执行。
这个语法正确吗
【问题讨论】:
由于您没有为第二个动作指定模式,它总是会执行。如果您只希望它在 NR!=FNR 时执行,请尝试以下操作:
NR==FNR { printf("NR==FNR, Filename=%s", FILENAME); }
NR!=FNR { printf("NR!=FNR, Filename=%s", FILENAME); }
无论好坏,模式都没有else,因此您通常最终会明确指定每个模式。
【讨论】:
sarathi 说Now ($1$2 in a && $3=$3","a[$1$2]) this executes for FNR!=NR 然后他在其他情况下执行另一部分
next;