You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Bash脚本提取方括号内字符串并转为CSV格式的问题

解决Bash脚本输出未按行分隔的问题

问题原因

你的脚本里echo $input_string没有用双引号包裹,导致原字符串中的换行符被Shell替换成空格,所有行合并成一行处理。后续grep提取的所有括号内容被一次性转换成逗号分隔的单行,自然无法按原行分组。

修正方案1:逐行处理+paste合并

#!/bin/bash

input_string="Group [BO_analytics_Corp] in security domain [Native]: [+r+w].
Group [Tooling_Ops] in security domain [Met_LDAP]: [+r+w].
Group [Gov_tools] in security domain [Met_LDAP]: [+r+w+g]."

echo "$input_string" | while IFS= read -r line; do
    # 提取当前行的括号内容,用逗号连接输出
    echo "$line" | grep -oP '(?<=\[).*?(?=\])' | paste -sd ','
done

修正方案2:用awk直接分割(更简洁)

#!/bin/bash

input_string="Group [BO_analytics_Corp] in security domain [Native]: [+r+w].
Group [Tooling_Ops] in security domain [Met_LDAP]: [+r+w].
Group [Gov_tools] in security domain [Met_LDAP]: [+r+w+g]."

echo "$input_string" | awk -F'[][]' '{print $2","$4","$6}'

输出结果

两种方案都能得到你期望的CSV格式:

BO_analytics_Corp,Native,+r+w
Tooling_Ops,Met_LDAP,+r+w
Gov_tools,Met_LDAP,+r+w+g

内容的提问来源于stack exchange,提问作者bob freeman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 18:54:49