我有一個帶有文字模式的文件:
AAAA - BBBB (CCCC) - (DDDD)
我只對單獨使用第一組 AAAA - BBBB 感興趣(即 AAAA 和 BBBB),我使用以下方法截斷了“(CCCC)-(DDDD)”:
FIRST_SET="${STRING%% (*}"
給我「AAAA - BBBB」。
我一輩子都無法從第二個「BBBB」中提取出「AAAA」。
提前致謝。
答案1
假設您想要兩個 shell 變數中的最終結果,您想要的單字由空格分隔,單字中沒有嵌入空格,且變數IFS
具有預設值:
$ read -r word1 dash word2 junk <file
$ printf 'word1 = "%s"\nword2 = "%s"\n' "$word1" "$word2"
word1 = "AAAA"
word2 = "BBBB"
這裡使用的命令read
會將第一個字讀入變量word1
,並將第二個字讀入變數word2
。單字之間的破折號被讀入變量dash
,末尾的垃圾被放置在名為 的變數中junk
。
答案2
就像你的第一步:
FIRST_SET="${STRING%% (*}"
FIRST_WORD=${FIRST_SET%% *}
SECOND_WORD=${FIRST_SET##* }