.awk 脚本中美元符号和句号处的 3 个语法错误,不知道哪里出了问题

时间:2021-06-23 13:35:53

标签: macos awk macos-big-sur

尝试实现一个简单的 awk 脚本以将一个大订单文件分成多个单独的订单,但在开始行时出现语法错误。

我有一个 lastTimeCount.txt 文件,它只包含一些用于文件命名目的的订单,但我的终端出现以下错误:

Terminal Log

这是我的脚本代码

awk -v lastCount=$(cat lastTimeCount.txt) '
BEGIN{ count=lastCount }
/<Order/ {
        rfile="order-" ++count ".xml"
        print > (rfile)
        getline
        while ($0 !~ "<\/Order>" ) {
                print > (rfile)
                getline
        }
        print > (rfile)
        close(rfile)
}
END{ print count > (lastTimeCount.txt) }
' Input_file

1 个答案:

答案 0 :(得分:0)

相反,让您的脚本成为 shell 脚本。使用 shellcheck.net 检查您的脚本

#!/bin/sh
awk -v lastCount="$(cat lastTimeCount.txt)" '
    BEGIN{ count=lastCount }
    /<Order/ {
            rfile="order-" ++count ".xml"
            print > (rfile)
            getline
            while ($0 !~ "<\/Order>" ) {
                    print > (rfile)
                    getline
            }
            print > (rfile)
            close(rfile)
    }
    END{ print count > (lastTimeCount.txt) }
' "$@"

然后:

sh splitxml.sh some_file