文字列抽出

文字列抽出

テキストパターンを含むファイルがあります:

AAAA - BBBB (CCCC) - (DDDD)

私は最初のセット AAAA - BBBB を個別に使用することだけに興味があります (つまり、AAAA と BBBB)。次を使用して '(CCCC) - (DDDD)' を切り取りました:

FIRST_SET="${STRING%% (*}" 

「AAAA - BBBB」と表示されます。

どうしても、2 番目の「BBBB」から「AAAA」を抽出できません。

前もって感謝します。

答え1

最終結果を 2 つのシェル変数に格納し、必要な単語が空白で区切られ、単語に空白が埋め込まれておらず、変数にIFSデフォルト値があると仮定します。

$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"

ここで使用されるコマンドreadは、最初の単語を変数 に読み込みword1、2 番目の単語を変数 に読み込みますword2。単語間のダッシュは変数 に読み込まれdash、末尾のジャンクは という変数に配置されますjunk

答え2

最初のステップと同じように実行してください:

FIRST_SET="${STRING%% (*}"
FIRST_WORD=${FIRST_SET%% *}
SECOND_WORD=${FIRST_SET##* }

関連情報