/ / Как да разделим думите в bash - linux, bash, ubuntu

Как да разделяте думите в бас -

Добър вечер, хора

В момента имам Array наречен inputArray, който съхранява входен файл 7 реда по ред. Имам дума, която е 70000($s0), как да разделя думата, така че е 70000 & ($ s0) отделно?

Погледнах отговор, който вече е на този уебсайт, но не можех да го разбера, отговорът, който погледнах, беше:

s="1000($s3)"
IFS="()" read a b <<< "$s"
echo -e "a=<$a>nb=<$b>"

даване на изхода a=<1000> b=<$s3>

Отговори:

1 за отговор № 1

Нека да направя този изстрел.

При определени обстоятелства, черупката ще изпълнява "думата разделяне", където серия от текст е разделен на думи. Границите на думите се дефинират от IFS променлива. Стойността по подразбиране на IFS е: интервал, табулация, нов ред. Когато даден низ е разделен на думи, всяка последователност от този набор от знаци се премахва, за да се извлекат думите.

В примера ви е набор от символи, които разграничават думите ( и ), Така че думите в този низ, които са ограничени от IFS набора от символи, са 1000 и $s3

Какво е <<< "$s"? Това е низ от тук. Той се използва за изпращане на низ към стандартен вход на някоя команда. Това е все едно

echo "$s" | read a b

освен тази форма не работи както се очаква в bash. read a b <<< "$s" работи добре.

Сега, какви са обстоятелствата, при които се разделя думата? Едната е, когато дадена променлива е некотирана. Демо:

IFS="()"
echo "$s" | wc    # 1 line, 1 word and 10 characters
echo $s | wc      # 1 line, 2 words and 9 characters

Най- read Командата също разделя низ на думи, за да присвои думи към имената на променливите. Променливата a получава първата дума и b получава всичко останало.

Командата с разбивка е:

  IFS="()" read a b <<< "$s"
# ^^^^^^^                      1
#                   ^^^^^^^^   2
#          ^^^^^^^^            3
  1. само за продължителността на read команда, задайте променливата IFS стойността ()
  2. изпрати низа "$s" да се read"И стандартния вход
  3. от stdin, използвайте $IFS за разделяне на входа на думи: задайте първата дума на променлива a и останалата част от низа към променливата b, Завършващи символи от $IFS в края на низът се изхвърлят.

документация:

Надявам се, че това помага.