如何根据字符串分割文本?

时间:2020-07-29 06:10:39

标签: bash

我在这里有一个文本字符串:

lorem ipsum dolor:坐在amet

我想将其分为2个变量:col1和col2基于字符串“ dolor:”定界符。

col1被分配了第一个字符串:

lorem ipsum dolor:

并且col2分配了第二个字符串:

坐amet

我如何在终端上做到这一点?

1 个答案:

答案 0 :(得分:3)

Bash通过参数扩展使事情变得简单,该扩展允许从字符串的开头(开头)或后面(结尾)进行修整。例如:

s="lorem ipsum dolor: sit amet"  ## full string
b="${s##*dolor: }"               ## remove everything from front through "dolor: "
a="${s% $b}"                     ## remove everything saved in $b from back + space

示例:

s="lorem ipsum dolor: sit amet"
b="${s##*dolor: }"
a="${s% $b}"
printf "a: %s\nb: %s\n" "$a" "$b"
a: lorem ipsum dolor:
b: sit amet

其中$a$b包含所需的字符串。可以在man bash中找到参数扩展,但从前或后修剪的参数扩展总结为:

${var#pattern}      Strip shortest match of pattern from front of $var
${var##pattern}     Strip longest match of pattern from front of $var
${var%pattern}      Strip shortest match of pattern from back of $var
${var%%pattern}     Strip longest match of pattern from back of $var

注意:模式可以包含普通的通配符,例如'*'

如果您还有其他问题,请告诉我。