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로 표시됩니다.