我想在 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。