0

我绊倒了一件事:

我在 awk 中对一堆文件进行排序,并将排序后的粒子保存为 txt。但现在我需要将它们保存为 .doc,尤其是横向格式。我用谷歌搜索了很多,发现这样做的唯一方法是将文件另存为 doc,但在创建文件期间,将这些rtf code写入文件,然后将真实内容写入文件。

rtf 开始标签代码:

{\rtf1\ansi\deff0 {\fonttbl {\f0 Courier;}}
{\colortbl;\red0\green0\blue0;\red255\green0\blue0;}
\landscape
\paperw15840\paperh12240\margl720\margr720\margt720\margb720

和 rtf 关闭标签:

}

关闭标记将作为文件的最后一行写入新创建的文件的最后一行之后。

我的问题是,我怎样才能在 awk 中找到文件的最后一行END

这是我的代码。http://pastebin.com/mfjH4NYY 知道发生了什么是巨大的代码,但关键是:标签fnnID中不可用,通过这个,如果我尝试附加字符以关闭END,将创建一个新文件}rtf 格式。有人可以帮我找出线索吗?

多谢

4

1 回答 1

3

假设您将拥有一个write_header(filepath)将 RTF 标头写入文件的函数。让这个函数在某个全局变量中记录filepath它传递的所有 s。然后,在您的 END 中,遍历这些filepaths 并将 RTF 页脚写入其中。

至于您的新“ls -l”问题:我不明白您为什么需要使用它。

这是我的建议:

function write_header(filepath) {
  print "{\\rtf1\\ans .... " >> filepath
  tracked[max_header++] = filepath
}

BEGIN {
  # You don't have to write the headers in BEGIN. Just make sure it's the
  # first thing you write to the files.
  write_header("file1.doc")
  write_header("file2.doc")
  write_header("another_file.doc")
}

END {
  # Write the footers.
  for(i in tracked) {
    print "}" >> tracked[i]
  }
}
于 2012-08-27T09:48:21.030 回答