gpt4 book ai didi

linux - 如何拆分字符串并使用 cut 打印所有子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:36 26 4
gpt4 key购买 nike

我有一些逗号分隔的字符串,想在 bash 中使用 cut 命令拆分它们:

This, is a, sample input.
This, is, another string, which could, appear, in my text, file.

我还想打印输出中的所有子字符串。第一个字符串的期望输出是:

This
is a
sample input.

这是第二个字符串的期望输出:

This
is
another string
which could
appear
in my text
file.

但是由于逗号(子字符串)的数量在所有字符串中都不是固定的,所以我不知道如何告诉 cut 命令显示所有子字符串。 (例如,第一个字符串中有 2 个逗号,第二个字符串中有 6 个逗号)。有没有办法在 bash 中执行此操作(使用 cut 或其他命令)?

我必须补充一点,虽然我在这篇文章中的示例是英文的,但我的实际字符串是阿拉伯语的。我的意思是我要使用的命令必须能够使用 Unicode 字符。

最佳答案

我认为可以通过两种方式解决问题。

  1. 分块读取字符串,直到找到一个逗号。使用 read 和一个 bash array
  2. 用换行符 (\n) 替换逗号 (,)。使用 tr

IIRC,tr 应该是 unicode 安全的,而 sed 取决于实现。我对此不是 100% 确定,我将不得不查找它。


使用Bash 数组:

$ IFS=, read -ra arr <<< "μήλο, πορτοκάλι μπανάνα, αχλάδι"
$ printf "%s\n" "${arr[@]# }"
μήλο
πορτοκάλι μπανάνα
αχλάδι

使用 tr

$ echo "μήλο, πορτοκάλι μπανάνα, αχλάδι" | tr ',' '\n'
μήλο
πορτοκάλι μπανάνα
αχλάδι

请注意,此替换将留下一个前导空格,因为单词在逗号后有一个空格。

您可以通过重新处理输出以去除前导空格来解决这个问题,
或预处理字符串以抑制逗号后的空格


关于linux - 如何拆分字符串并使用 cut 打印所有子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11325068/

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