如何在awk中使用print语法将内容写入ksh中的文件

时间:2015-02-23 21:11:39

标签: shell awk ksh

#!/bin/sh
FILENAME=/test/test.txt
awk -F, '
{ 
    printf("    Code %s  %\047d\n",$1,$2) >> $FILENAME
    r[NR] = $1
    c[NR] = $3here
}
END {
    for(i = 1; i <= NR; i++) printf("  %s Record Count   %s\n", r[i],c[i]) >> $FILENAME
}' totalsum.txt

我正在尝试将awk的结果路由到文件。但是它没有写入文件..这种语法有任何错误。

1 个答案:

答案 0 :(得分:2)

FILENAME是内置的awk变量。你有点不幸的选择作为你想要保存输出文件名的变量的名称,但这是不使用全大写变量名的另一个原因,除非你有充分的理由。您还尝试使用shell语法来访问变量内容(awk使用var,而不是$var)。

outfile=/test/test.txt
awk -F, -v outfile="$outfile" '
{ 
    printf "    Code %s  %\047d\n",$1,$2 >> outfile
    r[NR] = $1
    c[NR] = $3
}
END {
    for(i = 1; i <= NR; i++) printf "  %s Record Count   %s\n", r[i],c[i] >> outfile
}' totalsum.txt

您确定要使用>>代替>吗?

为什么输出重定向在awk中而不是在外部?