gpt4 book ai didi

linux - 如何在 bash 中拆分单词

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:37 24 4
gpt4 key购买 nike

大家晚上好

目前我有一个名为 inputArray 的数组,它逐行存储一个输入文件 7 行。我有一个词是70000($s0) ,我该如何拆分单词,使其与 70000 & ($s0) 分开?

我看了这个网站上的一个答案,但我看不懂,我看的答案是:

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

给出输出 a=<1000> b=<$s3>

最佳答案

让我试一试。

在某些情况下,shell 会执行“单词拆分”,将文本字符串拆分为单词。单词边界由 IFS 定义多变的。 IFS 的默认值是:空格、制表符、换行符。当一个字符串要被拆分成单词时,这组字符的任何序列都会被移除以提取单词。

在您的示例中,分隔单词的字符集是 () .因此,该字符串中受 IFS 字符集限制的单词是 1000$s3

什么是 <<< "$s" ?这是一个 here-string。它用于将字符串发送到某些命令的标准输入。就像在做

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. 从标准输入,使用$IFS将输入拆分为单词:将第一个单词分配给变量 a和字符串的其余部分到变量 b .来自 $IFS 的尾随字符字符串末尾的被丢弃。

文档:

希望对您有所帮助。

关于linux - 如何在 bash 中拆分单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com