【问题标题】:What is correct syntax for awk pattern matchingawk 模式匹配的正确语法是什么
【发布时间】:2013-02-04 05:17:23
【问题描述】:

我正在使用awk 打开多个文件并测试此命令

我正在尝试这个进行测试

awk -F"," 'NR==FNR{print FILENAME} {print FILENAME}' file2.txt file1.txt

第二个块应该在 NR != FNR 时执行,但对我来说它一直在执行。

这个语法正确吗

【问题讨论】:

    标签: linux awk


    【解决方案1】:

    由于您没有为第二个动作指定模式,它总是会执行。如果您只希望它在 NR!=FNR 时执行,请尝试以下操作:

    NR==FNR { printf("NR==FNR, Filename=%s", FILENAME); }
    NR!=FNR { printf("NR!=FNR, Filename=%s", FILENAME); }
    

    无论好坏,模式都没有else,因此您通常最终会明确指定每个模式。

    【讨论】:

    • 但是我看过很多例子,有人还说,在典型的 NR ==FNR 情况下,另一个大括号为 NR !=FNR 执行。喜欢这里stackoverflow.com/questions/12172682/…
    • @user2024264:我没有看到任何类似的东西。
    • sarathiNow ($1$2 in a && $3=$3","a[$1$2]) this executes for FNR!=NR 然后他在其他情况下执行另一部分
    • @user2024264:听起来你误解了另一个问题的评论。事实上,没有模式的操作将针对每个输入行执行。
    • @user2024264 我认为您缺少的是跳过第二部分的打印语句之后的next;
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-18
    • 2014-09-15
    • 2011-01-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多