linux - 如何使用sed提取分隔符之间的字符?

标签 linux scripting sed

我刚刚开始学习 sed。我想提取并打印 > 和 < 分隔符之间的字符。这是我的数据文件中的文本:

<span id="ctl00_ContentPlaceHolder1_lblRollNo">12029</span>

   <br /><b>Engineering & IT/Computer Science</b><br />

        <div id="ctl00_ContentPlaceHolder1_divEngITMerit">

                        <span id="ctl00_ContentPlaceHolder1_lblEngITSelListNo">3rd Provisional Selection List</span>

                <tr><td style='width: 200px' class='TblTRData'>IT/Computer Science/Software</td><td style='width: 150px'class='TblTRData'>7 (out of 471)</td><td style='width: 325px'class='TblTRData'>Selected in MS COMPUTER SCIENCE</td></tr>

                                Name:

                                <span id="ctl00_ContentPlaceHolder1_lblName">SIDRA SHAHID</span>

                                Father Name:

                                <span id="ctl00_ContentPlaceHolder1_lblFatherName">SHAHID RAFEEQ AHMAD</span>

我写了命令:

sed -n -e '/^[^>]*>\([^<]*\)<.*/s//\1/p' myfile.txt

问题是它返回一些 > < 之间的文本。例如,它打印 12029,但未在 Selected in MS COMPUTER SCIENCE 中选择。我做错了什么?

最佳答案

如果您只需要提取标签之间的字符串,这意味着您需要删除标签,让它们之间的字符串保持不变。对吧?

sed 's/<[^>]*>//g'

它用空字符串(无)替换(所有出现的)标签(“<”下一个“>”之后的所有内容)。文本将保留。

关于linux - 如何使用sed提取分隔符之间的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7684729/

相关文章:

sed - 从多个文件中删除多行文本

mysql - 授予路径权限

linux - 刷新陈旧的符号链接(symbolic link) linux

c - setpgid 的竞争条件

c++ - 将 irrlicht 类注册到 angelscript 中会得到 <未解析的重载函数类型>

scripting - 为删除 mongodb 表定义 cron

perl - 如何修剪文件 - 删除具有相同值的列

linux - .so : need to find out which function(s) are executed on loading

python - 在 login.defs 中使用子进程自动搜索和更改密码老化时遇到问题

regex - Unix 文件处理删除垃圾字符