【发布时间】:2014-12-08 11:32:21
【问题描述】:
需要 sed/awk/grep/任何可以解决我的任务的帮助。 我有一个大文件,我需要从中提取多个连续的行。
我有开始模式:<DN>
和结束模式:</GR>
中间有几行,像这样:
<DN>234</DN>
<DD>sdfsd</DD>
<BR>456456</BR>
<COL>6575675 sdfsd</COL>
<RAC>456464</RAC>
<GR>sdfsdfsFFFDd</GR>
我试过了:
sed -n '/\<DN\>/,/\<\/GR\>/p'
和其他几个(使用 awk 和 sed)。
它工作正常,但问题是源文件可能包含以<DN> 开头的行,并且在一堆行的末尾没有</GR>,然后在最后一个正常的部分开始:
<DN>234</DN> - unneded DN
<AB>sdfsd</AB>
<DC>456456</DC>
<EF>6575675 sdfsd</EF>
....really large piece of unwanted text here....
<DN>234</DN>
<DD>sdfsd</DD>
<BR>456456</BR>
<COL>6575675 sdfsd</COL>
<RAC>456464</RAC>
<GR>sdfsdfsFFFDd</GR>
<RAC>456464</RAC>
<GR>sdfsdfsFFFDd</GR>
如何仅提取需要的行并忽略包含<DN> 而没有结束</GR> 的垃圾日志?
接下来,我需要将多行片段从<DN> 转换为</GR> 为单行文件,以<DN> 开头并以</GR> 结尾。
任何帮助,将不胜感激。我卡住了
【问题讨论】: