첫 번째 쌍 < > 사이의 문자열을 제거하고 싶습니다.
원래의:
< a href="ACM-Reference-Format.dbx"> ACM-Reference-Format.dbx < /a >
내 생각엔
ACM-Reference-Format.dbx</a>
나는 사용하려고
sed 's/[<->]*/ but it only removed the first <
답변1
정규식에서는 []
대괄호 사이의 모든 문자와 일치하는 문자 클래스가 정의됩니다. 예를 들어 az와 사이의 알파벳 문자를 일치시킬 수 있습니다 [a-z]
. 이것은 귀하의 예에 도움이 되지 않습니다.
대신에 원하는 것은 일치, <
임의의 문자, 그 뒤에 입니다 >
.
일반적으로 을 사용할 수 있지만 <.*?>
Panki가 지적했듯이 sed
탐욕스럽지 않은 일치는 지원되지 않습니다.
>
및 다음을 제외한 모든 문자를 일치시킬 수 있습니다 /
.
sed 's/<[^>\/]*>\s//'
예:
─$ echo "< a href="ACM-Reference-Format.dbx"> ACM-Reference-Format.dbx < /a > " | sed 's/<[^>\/]*>\s//'
ACM-Reference-Format.dbx < /a >
설명하다:
<[^>\/]*>
< #matches <
[^ ] #negated character class, matches any character except the ones specified
> / #the characters not to be matched
\ #escaping the following slash to prevent it from being interpreted as special symbol
* #matches previous character between 0 and infinity times
> #matches >
답변2
다음을 수행할 수 있습니다.
$ sed 's/[^>]*> \([^>]*\)/\1/' file # or string
ACM-Reference-Format.dbx < /a >