字符串提取

字符串提取

我有一个带有文本模式的文件:

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##* }

相关内容