Как запустить файл .awk?
Я конвертирую файл CSV в формат таблицы, и я написал AWK script и сохранил его как my.awk. Вот мой script:
#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*
Как я могу запустить этот script на сервере Unix? Я попытался запустить этот файл my.awk с помощью этой команды:
awk -f my.awk life.csv
Ответы
Ответ 1
Файл, который вы даете, представляет собой оболочку script, а не awk-программу. Итак, попробуйте sh my.awk
.
Если вы хотите использовать awk -f my.awk life.csv > life_out.cs
, удалите awk -F , '
и последнюю строку из файла и добавьте FS=","
в BEGIN
.
Ответ 2
Поместите часть из BEGIN....END{}
внутри файла и назовите ее как my.awk.
И затем выполните его, как показано ниже:
awk -f my.awk life.csv >output.txt
Также я вижу разделитель полей как ,
. Вы можете добавить это в начальный блок файла .awk как FS=","
Ответ 3
Если вы поместите #!/bin/awk -f
в первую строку вашего AWK script, это проще. Кроме того, редакторы, такие как Vim и... распознают файл как AWK script, и вы можете раскрасить его.:)
#!/bin/awk -f
BEGIN {} # Begin section
{} # Loop section
END{} # End section
Затем вы можете вызвать AWK script следующим образом:
`$ echo "something" | ./awk-script`