にSED

2016-03-28 10 views
0

を使用して特殊文字を持つ2つの単語、私はフォーマットの各行のファイルを持っている間に、文字列全体の抽出:にSED

<tr><td>20456712 </td><td>Alin Smith </td><td.....(and so on). 

を私はライン内のすべてのstudens名とそのIDを返したい、出力は次のようになります。

20456712 Alin Smith 

.....私はSED/grepのでそれを行うことができますどのように

?。

私は<tr><td></td><td>の間に何かを得るために多くのことを試しましたが、私が思うに特殊文字のために何も働かなかった。

私はすでに数日間試行していません。

私は=>sed -r 's/.*[<]+tr+[>]+[<]+td+[>](\S+).* <\/td><td>(\S+).*/\1 \2/'を試してみたが、それは私だけID +最初の名前与えた:20456712 Alin

+2

あなたの試行を投稿してください。 – Maroun

+0

私は のsed -rしようとした最後の/.* [<]+tr+[>] + [<]+td+[>](\ S +)。* <\/td>​​(\ S +)。*/\ 1 \ 2/' が、それは私だけIDを与えます+ファーストネーム – user3857787

+0

質問を編集し、その行を挿入します。 – Maroun

答えて

0

また、これはあなたを助ける必要があります:あなたはどのように動作する両方のグループ

Live Demo on RegExr


にデータを一致の上にマウスを移動し、checingでデモでこれを見ることができます:

sed 's/.*\([0-9]\{8\}\) <\/td><td>\([^<]*\) .*/\1 \2/' 

View test on the command line

1

をあなたは、この正規表現を試みることができる:

<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>