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

Cut substrings between 2 characters and loop through them

我有以下字符串:

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

我想遍历括号之间的值,之前删除 <>。第一个循环将给出 name:John,sirname:Doe,第二个循环将给出 country:United States。但它可以有任意数量的值。我不想使用 linux 发行版中未预装的任何库或东西。

您可以使用 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