剪切2个字符之间的子串并循环遍历它们

时间:2017-08-29 17:54:04

标签: arrays bash substring cut

我有以下字符串:

<(name:John,sirname:Doe),(country:United States)>

我想循环括号之间的值,先前删除了<>。第一个周期将提供name:John,sirname:Doe,第二个周期将提供country:United States。但它可以有任何数量的价值。我不想使用任何未在Linux发行版中预装的库或东西。

1 个答案:

答案 0 :(得分:1)

您可以gnu awkFPAT一起使用(...)模式打破每个字段:

s='<(name:John,sirname:Doe),(country:United States)>'

awk -v FPAT='\\([^)]+\\)' '{
for (h=1; h<=NF; h++) {gsub(/[()]/, "", $h); print $h}}' <<< "$s"

name:John,sirname:Doe
country:United States