如何运行.awk文件?

Sha*_*rad 22 awk

我正在将CSV文件转换为表格格式,我写了一个AWK脚本并将其保存为my.awk.这是我的脚本:

#AWK for test
awk -F , '
    BEGIN {
        aa = 0;
    }
    {
        hdng = "fname,lname,salary,city";
        l1 = length($1);
        l13 = length($13);
        if ((l1 > 2) &&  (l13 == 0)) {
            fname = substr($1, 2, 1);
            l1 = length($3) - 4;
            lname = substr($3, l1, 4);
            processor = substr($1, 2);
            #printf("%s,%s,%s,%s\n", fname, lname, salary, $0);
        }

        if ($0 ~ ",,,,")
            aa++
        else if ($0 ~ ",fname")
            printf("%s\n", hdng);
        else if ((l1 > 2) && (l13 == 0)) {
            a++;
        }
        else {
            perf = $11;
            if (perf ~/^[0-9\.\" ]+$/)
                type = "num"
            else
                type = "char";
            if (type == "num")
                printf("Mr%s,%s,%s,%s,,N,N,,\n", $0,fname,lname, city);
        }
    }
    END {
    } ' < life.csv > life_out.csv*
Run Code Online (Sandbox Code Playgroud)

如何在Unix服务器上运行此脚本?我尝试使用此命令运行此my.awk文件:

awk -f my.awk life.csv
Run Code Online (Sandbox Code Playgroud)

lhf*_*lhf 32

您提供的文件是shell脚本,而不是awk程序.所以,试试吧sh my.awk.

如果你想使用awk -f my.awk life.csv > life_out.cs,然后取出awk -F , '并从文件的最后一行,并添加FS=","BEGIN.


小智 24

如果你把#!/bin/awk -fAWK脚本放在第一行就更容易了.另外,像Vim和... 这样的编辑器会将文件识别为AWK脚本,您可以着色.:)

#!/bin/awk -f
BEGIN {}  # Begin section
{}        # Loop section
END{}     # End section
Run Code Online (Sandbox Code Playgroud)

然后你可以这样调用你的AWK脚本:

`$ echo "something" | ./awk-script`
Run Code Online (Sandbox Code Playgroud)

通过运行将文件更改为可执行文件后,例如:

chmod ugo+x ./awk-script
Run Code Online (Sandbox Code Playgroud)


Vij*_*jay 13

将部件BEGIN....END{}放在文件中,并将其命名为my.awk.

然后执行如下所示:

awk -f my.awk life.csv >output.txt
Run Code Online (Sandbox Code Playgroud)

我也看到一个字段分隔符,.您可以在.awk文件的开始块中添加它FS=","