2013-10-20 55 views
2

在OSX上,我已经将Powerpoint卡组转换为ASCII文本,现在想用awk处理它。如何将awk拆分文件用于多行记录?

  • 我想将文件拆分成对应于幻灯片的多行记录。
  • 处理任何以大写拉丁字母开头的行提供了一个很好的近似值,但我无法弄清楚在awk中这样做。
  • 我试过重置记录分隔符RS = "\n^[A-Z]"RS = "\n^[[:alnum:]][[:upper:]]"以及各种排列,但没有区别。也就是说,awk一直将每个人视为一个记录,而不是像我想要的那样对他们进行分组。

清洁的文字是这样的:

Welcome 
++ Class will focus on: 
– Basics of SQL syntax 
– SQL concepts analogous to Excel concepts 
Who Am I 
++ Self-taught on LAMP(ython) stack 
++ Plus some DNS, bash scripting, XML/XSLT 
++ Prior professional experience: 
– Office of Management and Budget 
– Investment banking (JP Morgan, UBS, boutique) 
– MBA, University of Chicago 


Roadmap 
+ Preliminaries 
+ What is SQL 
+ Excel vs SQL 
+ Moving data from Excel to SQL and back 
+ Query syntax basics 
- Running queries 
- Filtering, grouping 
- Functions 
- Combining tables 
+ Using queries for analysis 

一些 '滑梯' 有空白行,有些则没有。

一旦过去了这些障碍,我打算将每个记录包装在deck.js中使用的标记中。但正确的记录定义正在令我失望。

我该怎么做?

编辑:这个问题最初也被问到关于将Unicode项目符号转换为ASCII,但我已经想通了。评论中的一些评论集中在那些东西上。

回答

1

awk你可以尝试使用,以收集记录:

/^[[:upper:]]/ { 
    if (r>0) print rec 
    r=1; rec=$0 RS; next 
} 
{ 
    rec=rec $0 RS 
} 

END { 
    print rec 
} 

要删除的子弹可以使用

gsub (/•/,"++",rec) 
+0

我不知道如何将子弹字符添加到命令行,但是已经找到了解决方案(并且会添加到我的问题中)。请解释如何让子弹进入命令行,或者删除那一块,所以答案是毫不含糊的。我正在看另一块。感谢您看这个。 – chernevik

+0

我不确定“命令行”是什么意思?也许你可以给出一个示例输入文件,以便清楚用awk来处理什么? –

+0

对不起,我的意思是在命令模式的vi屏幕底部的一行 - 从w /:开始的行。我不知道如何让文本中的字符出现在命令模式下的命令中。 – chernevik

1

您可以尝试使用内置到OSX的“textutil”实用工具将文件转换在一个脚本内节省您全部手工完成。尝试键入以下到终端窗口,按移动到下一个页面:

man textutil 

一旦你得到了一些转换的文本,尝试张贴的,使人们可以看到投入的样子,那么也许有人可以帮你把它分成你想要的。

相关问题