我刚刚开始学习 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/