입력은 다음과 같습니다.
$ echo -e '<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>[email protected]</td></tr>\n<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>[email protected]</td></tr>'
<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>[email protected]</td></tr>
<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>[email protected]</td></tr>
이것은 약간의 마법이 적용된 출력입니다!
$ echo -e '<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>[email protected]</td></tr>\n<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>[email protected]</td></tr>' | SOMEMAGIC
<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>example.com</td></tr>
<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>example2.com</td></tr>
내 질문:"SOMEMAGIC" "@" 앞의 접두사와 "@" 자체를 제거하는 방법은 무엇입니까?
유일한 구분 기호는
"</td><td>"
XXX 및 YYY는 무엇이든 될 수 있습니다. 예를 들면 다음과 같습니다.[이메일 보호됨]" 또한:\
ps: 문제는 다음에서 접두사를 어떻게 제거할 수 있느냐는 것입니다.
그래서 그것은 될 것입니다 :
example.com
이 테이블에는?
답변1
이것은 작동합니다:
echo '....' | sed 's,>[^<@]*@,>,g'
답변2
이 시도:
$ echo -e '<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>[email protected]</td></tr>\n<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>[email protected]</td></tr>' | \
awk -F'</td><td>' 'gsub(/.*@/,"",$9)' OFS='</td><td>'
<tr><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>XXX</td><td>example.com</td></tr>
<tr><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>YYY</td><td>example2.com</td></tr>
</td><td>
구분 기호는 행을 필드로 분할합니다 9
. 이메일은 필드 번호입니다 . 원하는 출력을 얻으 려면 9th
필드 앞의 모든 문자를 제거할 수 있습니다 .@
9th
꼭 그럴 필요가 없다면 awk
다음을 시도해 보세요 perl
.
perl -pe 's#(.*)<td>.*@(.*)#$1<td>$2#'