在 Bash 中按分隔符拆分字符串

Bash

分解 Bash 中的字符串操作

使用 shell 脚本时,一个常见的任务是根据分隔符分割字符串。例如,考虑一个包含用分号分隔的电子邮件地址的字符串。如果您需要单独处理每封电子邮件,那么了解如何拆分该字符串就变得至关重要。本文将指导您通过不同的方法在 Bash 中实现这一目标。

我们将探索解决方案,例如使用“tr”命令和操作内部字段分隔符(IFS)。最后,您将能够有效地处理字符串拆分并将 IFS 重置为其默认值。让我们深入研究并简化您的 Bash 脚本编写任务!

命令 描述
tr 翻译或删除字符。此处用于用换行符替换分号来分割字符串。
IFS 内部字段分隔符,用于根据 Bash 脚本中的特定分隔符分割字符串。
read -r -a 读取一行输入并将其拆分为一个数组。 -r 选项可防止反斜杠被解释为转义字符。
echo 将文本打印到标准输出。用于显示分割后的字符串元素。
split 一个 Perl 函数,根据指定的分隔符将字符串划分为字符串列表。
foreach 迭代值列表的 Perl 循环结构。

了解 Bash 字符串分割技术

第一个 Bash 脚本演示了如何使用 命令。这里我们定义一个字符串 并使用 和这个结合 tr 将分号分隔符转换为换行符。这有效地将字符串分成单独的行。这 然后循环遍历每一行,打印方括号内的地址。这种方法很简单,利用了 Unix 命令强大的文本处理能力来操作字符串。

另一种方法涉及调整 。通过临时设置 到分号,我们可以将字符串拆分成一个数组。我们保存原件 到 OIFS 在修改它之前,确保我们以后可以恢复它。这 命令将输入​​字符串读取到名为的数组中 ,根据修改后的情况进行分割 。处理后,原来的 IFS 已恢复。这种方法提供了一种更加编程化的方式来处理 Bash 中的字符串分割,使我们能够利用数组进行进一步的操作。

使用 Bash 按分隔符分割字符串

bash脚本

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Split string using 'tr' and iterate
mails=$(echo $IN | tr ";" "\n")
for addr in $mails; do
  echo "> [$addr]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

使用 IFS 在 Bash 中分割字符串

bash脚本

#!/usr/bin/env bash
# Input string
IN="bla@some.com;john@home.com"
# Save the original IFS
OIFS=$IFS
# Set IFS to semicolon
IFS=';'
# Split string into an array
read -r -a mails2 <<< "$IN"
# Restore the original IFS
IFS=$OIFS
# Iterate over the array
for x in "${mails2[@]}"; do
  echo "> [$x]"
done

# Output:
# > [bla@some.com]
# > [john@home.com]

使用Python进行字符串分割

Python脚本

#!/usr/bin/env python3
# Input string
IN = "bla@some.com;john@home.com"
# Split string by semicolon
mails = IN.split(';')
# Iterate and print each element
for addr in mails:
    print(f"> [{addr}]")

# Output:
# > [bla@some.com]
# > [john@home.com]

使用 Perl 分割字符串

Perl脚本

#!/usr/bin/env perl
use strict;
use warnings;
# Input string
my $IN = "bla@some.com;john@home.com";
# Split string by semicolon
my @mails = split(';', $IN);
# Iterate and print each element
foreach my $addr (@mails) {
    print "> [$addr]\n";
}

# Output:
# > [bla@some.com]
# > [john@home.com]

Bash 中的高级字符串分割技术

在 Bash 中分割字符串的另一个强大方法是使用 命令。 是一个多功能的命令行实用程序,专为模式扫描和处理而设计。它对于分割字符串特别有用,因为它允许我们定义自定义字段分隔符。例如,我们可以使用 根据分号分隔符分割字符串并打印各个组成部分。这种方法非常灵活,可以处理更复杂的字符串操作任务,使其成为 Bash 程序员工具包中的一个有价值的工具。

此外, 命令可用于根据分隔符分割字符串。这 命令通常用于从每行输入数据中提取部分。通过指定分隔符 选项并选择字段 -f 选项,我们可以有效地分割和提取字符串的一部分。例如,使用 将从输入字符串中提取第一个电子邮件地址。这些先进的方法为 Bash 中的字符串操作任务提供了更多的控制和精度。

  1. 如何在 Bash 中按分隔符分割字符串?
  2. 您可以使用 变量或命令,例如 , , 和 cut 在分隔符上分割字符串。
  3. 是什么 Bash 中的变量?
  4. 这 (内部字段分隔符)是一个特殊变量,它定义用于将输入文本拆分为单词或标记的字符。
  5. 我怎样才能重置 变量为其默认值?
  6. 保存原件 改变前的值,处理后恢复: 。
  7. 什么是 命令在字符串分割中做什么?
  8. 这 命令翻译或删除字符。它可以用换行符替换分隔符来分割字符串: 。
  9. 我可以使用 Bash 将字符串拆分为数组吗?
  10. 是的,通过改变 变量和使用 ,您可以将字符串拆分为数组:
  11. 是什么 命令用于?
  12. 是用于模式扫描和处理的命令行实用程序。它可以通过定义自定义字段分隔符来分割字符串。
  13. 如何 指挥工作?
  14. 这 命令从每行输入中提取部分。它可以通过指定分隔符和选择字段来分割字符串: 。
  15. 为什么使用 对字符串分割有帮助吗?
  16. 使用 允许您定义用于分割字符串的自定义分隔符,使其适用于不同的输入格式。
  17. Bash 中是否可以用多个分隔符分割字符串?
  18. 是的,您可以组合使用 和 处理多个分隔符。
  19. 我可以用吗 Bash 中的字符串分割?
  20. 尽管 主要是一个流编辑器,它可以与其他命令结合使用,例如 间接分割字符串。

掌握 Bash 中的字符串操作可以显着提高脚本编写效率。是否使用 对于简单的分隔符或更高级的工具,例如 和 ,这些技术对于有效的 Bash 编程至关重要。请记住始终恢复原始状态 IFS 以避免脚本中出现意外行为。使用这些方法,您可以在 Bash 脚本中处理各种字符串处理任务。