【发布时间】:2015-03-22 00:43:54
【问题描述】:
我有一个包含以下文本的文件
<MY_TEXT="XYZ" PATH="MNO" #First occurrence of MY_TEXT
<location= "XYZ" path="ABC"
\location>
<R_DATA = MNOP
<Mylocation ="ghdf" stime=20150301 etime=20150401 >
<Mylocation ="ghdf" stime=20150401 etime=20150501 >
\R_DATA>
<Blah>
\MY_TEXT> #Second occurrence of MY_TEXT
<MY_TEXT="ABC" PATH="EFG" #Third occurrence of MY_TEXT
<location= "QQQ" path="LLL"
\location>
<R_DATA = MNOP
<Mylocation ="ghdf" stime=20150301 etime=20150401 >
<Mylocation ="ghdf" stime=20150401 etime=20150501 >
\R_DATA>
<Blah>
\MY_TEXT> #Fourth occurrence of MY_TEXT
我的任务是在行中找到一个包含<MY_TEXT="XYZ" 的文本,它的开头可能有空格,然后找到它的结尾\MY_TEXT 所以输出有点
<MY_TEXT="XYZ" PATH="MNO" #First occurrence of MY_TEXT
<location= "XYZ" path="ABC"
\location>
<R_DATA = MNOP
<Mylocation ="ghdf" stime=20150301 etime=20150401 > #First occurrence of Mylocation
<Mylocation ="ghdf" stime=20150401 etime=20150501 > #Second occurrence of Mylocation
\R_DATA>
<Blah>
\MY_TEXT>
然后它在此处找到最后一次出现的 Mylocation 即 #Second occurrence of Mylocation 并将文本 etime=20150501 修改为 something 并在文件中内联后附加一个新行。
我遇到了这个链接Sed to extract text between two strings。但在这里使用 sed 命令要么让我 当我使用 -n 选项时什么都没有,或者当我删除 -n 时打印整个文件。 所以我无法进一步处理文本,因为我无法提取我想要的文本。
我也试过 sed -n '/^ *START=A *$/,/^ *END *$/p' yourfile 。但是没有用。你们能帮我吗,因为我的脚本不是很好。提前致谢。
【问题讨论】: