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