字符串提取?

字符串提取?

我想在 BASH 中使用 sed 从字符串“XXXX·YYYY·ZZZZ”中获取“YYYY”。

试图更好地理解 sed 但我还没有明白

答案1

既然您正在使用,bash则无需使用awksed

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。

相关内容