【问题标题】:Why is this Awk file not producing any output? [closed]为什么这个 awk 文件不产生任何输出? [关闭]
【发布时间】:2012-09-27 09:48:31
【问题描述】:

命令:

awk –f cs2ss.awk < dataset.csv > dataset.ss

应该使用这个程序:

BEGIN  {FS = ",";}
{
  for(i=1;i<=NF;i++) {printf("%s ", $i);}
  printf("\n");
}

从 dataset.csv 中取出所有逗号。但它只创建空文件 dataset.ss。我确保所有使用的文件都是 .txt 而不是 rtf(使用 MacBook)。我做错了什么?

编辑:输入文件的截图 -

【问题讨论】:

  • 为我工作.. 顺便说一句,你不需要&lt;。即,我使用了这条线:awk -f so.awk data.txt,因为你问过它
  • 也适合我。 .csv 是什么样的?会不会是一些 Unicode/换行问题?
  • 我做错了什么?我试过在 textedit 和 textwrangler 中查看输出文件。你能列出你采取的步骤吗?我知道这听起来很简单,但我似乎无法解决它!
  • 您可能想创建自己的小型 .csv 文件并验证自己的代码是否正常工作,然后找出与原始、较大的数据文件有何不同。
  • 你为什么要使用 awk:tr , ' ' &lt; dataset.csv &gt; dataset.ss

标签: unix command-line awk


【解决方案1】:

代码有效。你可以通过简单的运行来测试它

awk –f cs2ss.awk

并输入示例输入行。所以你一定是做错了什么,而且从这里看不出来。

要尝试的事情......

运行

awk –f cs2ss.awk < dataset.csv

如果您在屏幕上得到非空输出,则说明目标文件或文件系统有些奇怪。如果屏幕上出现空白输出,则说明输入文件有问题。

如果是输入文件,是什么

file dataset.csv

告诉你?

【讨论】:

  • 我在原始答案中添加了一些可能的诊断步骤。
  • 不需要&lt;,这如何解决OP的问题? ..适合发表评论。
  • @Levon,我想在我添加诊断提示之前,你一定已经评论过了。几乎让我希望我没有修改你的评论:P 至于
  • 好的所以空白输出,所以它必须是输入文件。当我执行文件 community.data(本例中的输入文件)时,我得到“ASCII 文本,行很长,带有 CRLF 行终止符”
  • 嗯。 可能是那些 DOS 行终止符。尝试将 BEGIN 行更改为 'BEGIN {FS = ","; RS = "\r\n";}' 看看会发生什么。您可能还需要尝试“\r?\n”。
猜你喜欢
  • 1970-01-01
  • 2017-01-03
  • 2023-01-02
  • 1970-01-01
  • 2021-10-07
  • 1970-01-01
  • 2013-03-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多