文字列抽出?

文字列抽出?

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と表示されます。

おすすめ記事