【问题标题】:write into file by changing the file to rtf - awk通过将文件更改为 rtf 写入文件 - awk
【发布时间】:2012-08-27 09:10:28
【问题描述】:

我在纠结一件事:

我在 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 关闭标签:

}

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

我的问题是,在到达END 之前,如何在 awk 中找到文件的最后一行。

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

非常感谢

【问题讨论】:

    标签: shell awk converter rtf


    【解决方案1】:

    假设您将有一个函数write_header(filepath) 将RTF 标头写入文件。让这个函数在某个全局变量中记录它传递的所有filepaths。然后,在您的 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]
      }
    }
    

    【讨论】:

    • 哦,好吧,所以在END 中,我将遍历文件并将 rtf 关闭标签插入每个文件。但是我怎么能在 awk 中 ls -l 呢?
    猜你喜欢
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2020-04-01
    • 2019-03-23
    • 1970-01-01
    • 2013-02-19
    相关资源
    最近更新 更多