문자열 추출?

문자열 추출?

BASH에서 sed를 사용하여 "XXXX·YYYY·ZZZZ" 문자열에서 "YYYY"를 가져오고 싶습니다.

sed를 더 잘 이해하려고 노력 중이지만 아직 이해가 안 돼요

답변1

사용하고 있으므로 bash사용하거나 할 필요가 없습니다 awk.sed

string='XXXX · YYYY· ZZZZ'
printf '%s\n' "${string:7:4}"
YYYY

이 문자열은 처리에 적합하지 않습니다 sed. ·접두사와 ·접미사가 있다고 가정하면 다음과 같이 선택할 수 있습니다.

string='XXXX · YYYY· ZZZZ'
printf '%s\n' "$string" | sed -nE 's/^.*· ([^· ]+)·.*/\1/p'
YYYY

ERE는 매우 번거롭지만

^             # Bind to start-of-line
.*            # Any character, zero or more times
·             # Literal dot and space
(             # Start of a bracketed group
    [^· ]+    # NOT dot or space, at least once
)
·             # Literal dot
.*            # Any character, zero or more times

\1            # The value of the first bracketed expression

이 표현식에 사용된 점 문자는 표준 키보드의 소수점/마침표가 아니라는 점을 지적할 가치가 있습니다.중간 지점, UTF-8에서는 0xc2 0xb7로 표시됩니다.

관련 정보