awk를 사용하여 두 문자 사이의 텍스트를 삭제하는 방법

awk를 사용하여 두 문자 사이의 텍스트를 삭제하는 방법

이 표현식에서 "<"와 ">" 사이의 모든 항목을 제거하는 방법을 알고 싶습니다.

i`<    1|   |    1>      -1.0000000000000

결과는 다음과 같습니다.

i-1.00000000

awk를 사용해 보았지만 ">"의 오른쪽 부분이나 부분의 왼쪽 부분만 제거할 수 있습니다.

awk -F '>' '{print $2}' 

감사합니다

답변1

파이프를 통해 데이터 전송 sed:

... | sed -e 's/<.*>//'

정규식은 " <", 임의 개수의 문자, " >" 순으로 일치하고 이를 빈 문자열 " //"로 바꿉니다.

답변2

나는 다음을 사용할 것이다 sed:

$ echo 'i<    1|   |    1>      -1.0000000000000' | sed 's/<[^-]*//'
i-1.0000000000000

답변3

일치 전후 FS에 정규식을 사용하고 필드를 인쇄할 수 있습니다 .awk

echo 'i<    1|   |    1>      -1.0000000000000' | awk -F'<[^>]*> *' '{print $1 $2}'

답변4

echo 'i<    1|   |    1>      -1.0000000000000' |perl -pe 's/<.*>//;s/\s+/ /'

:)

관련 정보