我有一个带有文本模式的文件:
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##* }