【问题标题】:how to use print syntax in awk to write content into file in ksh如何在awk中使用打印语法将内容写入ksh中的文件
【发布时间】:2015-04-25 08:26:56
【问题描述】:
#!/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 的结果路由到文件中。但它没有写入文件中。是不是该语法有任何错误。

【问题讨论】:

  • &gt;&gt; 重定向是一个 shell 功能。将其放在awk 脚本之外。
  • Estan..是的,当我在外面使用 printf 时,它的打印按预期进行
  • Morton.. 正在读取输入文件内容,如 12,1455.00,2 并将它们路由到另一个输出文件。
  • 在 awk 之前有意义.. 我在文件中添加了一些内容,所以我正在重定向 morton..

标签: shell awk ksh


【解决方案1】:

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

您确定要使用&gt;&gt; 而不是&gt; 吗?

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

【讨论】:

  • great Morton .. 只是好奇任何机会与 awk -F 一起应用排序 .. 像这样 sort -t "," -k1,1 .... 我正在寻找第一个 cloumn 排序在文件中,样本输入 123,12.50,1
  • 我学会了 Mortan.. awk -F, -v outfile="$outfile" -v ts="$ts" -v tc="$tc" -v sq="'" ' 和这样打印 .. printf("%14s Total Amount %" sq ".2f\n "," ",ts)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多