我有一个文件,每行格式为:
<tr><td>20456712 </td><td>Alin Smith </td><td.....(and so on).
我想要返回所有学生姓名和他们的ID在行中,输出应该是:
20456712 Alin Smith
.....
我怎么能用sed / grep做到?。
我已尝试过许多方法来解决<tr><td>
和</td><td>
之间的问题,但由于我认为的特殊字符,没有任何效果。
我已经尝试了几天没有结果。
我试过=&gt; sed -r 's/.*[<]+tr+[>]+[<]+td+[>](\S+).* <\/td><td>(\S+).*/\1 \2/'
,但它只给了我ID +名字:20456712 Alin
答案 0 :(得分:1)
你可以试试这个RegEx:
<tr><td>([\d\s]+)<\/td><td>([\w\s]+)<\/td>
所有数据都将存储在第1组(ID)和第2组(全名)中。你可以在演示中看到这一点,将鼠标悬停在匹配上并对两组中的数据进行划分
工作原理:
<tr> # Opening <tr>
<td> # Opening <td>
([\d\s]+) # ID
<\/td> # Closing </td>
<td> # Opening <td>
([\w\s]+) # Full Name
<\/td> # Closing </td>
答案 1 :(得分:0)