如何运行.awk文件?

如何运行.awk文件?,awk,Awk,我正在将一个文件转换为表格格式,我编写了一个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 =

我正在将一个文件转换为表格格式,我编写了一个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*
您提供的文件是一个shell脚本,而不是awk程序。所以,试试
sh my.awk


如果您想使用
awk-f my.awk life.csv>life\u out.cs
,则从文件中删除
awk-f'
和最后一行,并在
BEGIN
中添加
FS=“,”
,将
开始…结束{}
中的部分放入文件中,并将其命名为my.awk

然后按如下方式执行:

awk -f my.awk life.csv >output.txt
我还看到一个字段分隔符,如
。您可以将其添加到.awk文件的begin块中,作为
FS=“,”
,如果您将
#/bin/awk-f
在awk脚本的第一行,它更简单。加上编辑喜欢和。。。将文件识别为AWK脚本,您可以将其着色。:)

通过运行以下命令将文件更改为可执行文件:

chmod ugo+x ./awk-script
然后您可以这样调用您的AWK脚本:

`$ echo "something" | ./awk-script`

您能否将类似于
tail-f
的输出导入
awk
shell脚本?因此,我可以跟踪一个日志文件,然后用awk进行一些处理,然后将其输出到屏幕上?实际上,下面的答案看起来很粗糙。你可以简单地说
chmod+x…
而不是
chmod ugo+x…
@Calaf:如果你将
chmod
指令放在
echo之前,你的编辑就会更清晰“something”|/awk script
command.@Seamus说得很好。完成了。(我抵制住了对Emacs被称为“点”的愤怒的诱惑,添加了明确的说明,使Emacs的优越性更加明显。)
chmod ugo+x ./awk-script
`$ echo "something" | ./awk-script`