我在普通的ascii中有一堆非常古老的文本。大部分文本都是格式化为下一个的简单表格:
------------------------------------------
| Some text | 200.3 | some text |
------------------------------------------
| Another text | 30.30 | comment |
------------------------------------------
...many "lines" like above...
我需要将文本转换为“现代”文档。手动将单元格复制到TextEdit.app表是非常痛苦的工作。 (我正在使用OS X)。
在某些脚本中是否有可能将表格转换为RTF或DOC格式?我可以尝试自己编写脚本,只需要一些想法如何开始......
答案 0 :(得分:4)
我喜欢apple-automator服务,所以我向您展示整个工作流程 - 接下来的步骤:
Service
Output replaces selected text
复选框现在添加第一个动作:
Run shell script
to stdin
/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
工作流:
|
个字符的整个表格)TextEdit -> Services
运行上述服务。如果一切正常 - 用简单的RTF表替换表格,你可以调整列宽等等。
行动确实:
perl
脚本将文本表转换为简单的HTMLtable textutil
将HTML转换为RTF并将rtf复制到剪贴板 Mac的Automator.app
非常强大,通过一些调整,您可以制作converor.app
并简单地将所有ascii文件放入其中以转换为rtf文件。
答案 1 :(得分:1)
我会使用一个小的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>'
答案 2 :(得分:0)
如果用'|'可靠地分隔文本每个字段的字符,awk语言将被证明是“简化”您的信息的好工具: - )
awk '-F|' -v OFS="\t" 'NF>1{ print $2, $3, $4 )' infile > outfile.tab
就个人而言,我已经十多年没有乱用RTF格式了。为什么你认为它是“现代的”;-)? ..正如你所说,你有“像上面这样的很多行”,也许你应该考虑将这些信息存储在哪里更容易搜索或重新考虑,比如数据库?或至少某种电子表格应用程序。但是我们会详细介绍您有意做出有意义的评论。
如果您觉得此解决方案有帮助,那么S.O.上有1000个帖子。显示类似的awk用法。
IHTH。