【问题标题】:Split string with IFS using Bash? [duplicate]使用 Bash 使用 IFS 拆分字符串? [复制]
【发布时间】:2019-12-16 15:32:16
【问题描述】:

我有一个类似的字符串:

Spain-South Africa:2-1

我想像这样拆分它:

Spain-South Africa
2-1

我试图用IFS=':' 拆分它,但它给了我:

Spain-South

Africa
2-1

我的代码:

【问题讨论】:

  • IFS 本身什么也不做; 使用 IFS 运行什么命令来产生该输出?
  • 我从文件中读取了那个字符串,所以我使用了这个:read -r -a results
  • 你是如何显示results的内容的?
  • Bash FAQ 001; str 永远不会设置为您认为的值,因为 shell 将 cat 的输出拆分为 空格,而不仅仅是换行符。
  • 在问题中输入您的代码;不要发布图片链接。

标签: linux bash split ifs


【解决方案1】:

无法重现,但您可能没有为read 命令正确设置IFS,或者您没有正确显示输出。

$ str="Spain-South Africa:2-1"
$ IFS=: read -ra results <<< "$str"
$ declare -p results
declare -a results=([0]="Spain-South Africa" [1]="2-1")

根据你短暂的评论,你想要类似的东西

while IFS=: read -ra results; do
    ...
done < "$1"

而不是

for str in $(cat "$1"); do
    ...
done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-14
    • 2014-04-03
    • 1970-01-01
    相关资源
    最近更新 更多