我有一堆非常古老的纯ascii文本。大多数文本是格式为next的简单表格:
------------------------------------------
| Some text | 200.3 | some text |
------------------------------------------
| Another text | 30.30 | comment |
------------------------------------------
...many "lines" like above...
我需要将文本转换为“现代”文档。手动将单元格复制到TextEdit.app表中是一项非常痛苦的工作。(我使用的是OS )。
这里有一些脚本如何将表格转换为RTF或DOC格式的可能性吗?我可以尝试自己制作脚本,只需要一些想法如何开始…
发布于 2013-05-27 20:00:32
我喜欢apple-automator服务,所以我向您展示了整个工作流程-包括以下步骤:
Service
Output replaces selected text
“显示库”(如果隐藏)
现在添加第一个操作:
外壳输入:to stdin
Run shell script
/usr/bin/perl
添加以下脚本
use 5.012;
use open qw(:std :utf8);
print "<table border='1'>\n";
while(<>) {
chomp;
next if /^\s*[=-]*\s*$/;
my @arr = m/(?:^|\G\|)((?:[^\\|]|\\.)*)/sg;
print "<tr><td>" . join('</td><td>', map {s/^\s*(.*?)\s*$/$1/;$_} splice(@arr,1,-1)) . "</td></tr>\n";
}
print "</table>";
现在执行第二个操作:
Run shell script
to stdin
添加下一个脚本
textutil -stdin -inputencoding UTF-8 -format html -convert rtf -stdout | pbcopy -Prefer rtf
并添加第三个操作:
Get content of the clipboard
使用某个名称保存服务,如:Table2Rtf
工作流程:
|
D52中的所有表格选择整个表。如果一切正常-表格被一个简单的RTF表格取代,你可以调整列宽,等等……
这些操作执行以下操作:
RTF脚本将文本表格转换为简单的HTMLtable
perl
textutil
并因为选择了"Output
textutil
”。Mac的Automator.app
是非常强大的,通过一些调整,你可以做一个converor.app
,并简单地将你的所有ascii文件放入其中,以便转换为rtf文件。
发布于 2013-05-27 19:43:25
我想我会用一个小的Python脚本把它转换成,比如说,html。
#!/usr/bin/env python
import sys, re
print '<html><body><table><tr>'
for line in sys.stdin:
if re.match(r'^-+$', line): # separator line?
print "</tr><tr>"
else: # line with values
print ''.join('<td>%s</td>' % field for field in line.split('|'))
print '</tr></table></body></html>'
发布于 2013-05-27 19:56:04
如果每个字段用字符'|‘可靠地分隔文本,那么awk语言将被证明是一个很好的工具来“归结”您的信息:-)
awk '-F|' -v OFS="\t" 'NF>1{ print $2, $3, $4 )' infile > outfile.tab
就我个人而言,我已经有10多年没有接触过RTF格式了。为什么你认为它是“现代的”;-)正如你所说的,你有“许多类似上面的行”,也许你应该考虑将这些信息存储在更容易搜索或可重构的地方,比如数据库?或者至少是某种电子表格应用程序。但我们需要更多关于您的意图的详细信息,以便做出有意义的评论。
如果你觉得这个解决方案有帮助,在S.O.上有1000个帖子展示了awk的类似用法。
IHTH。
https://stackoverflow.com/questions/16778946
复制相似问题