bash 来自字符串的数组仅保留分隔符之间的内容
bash array from string keeping only content between delimiters
我正在尝试创建一个 bash 脚本,该脚本使用通过 curl 从维基百科提取的信息来帮助整理我的音乐 collection。我已经得到可靠的 return 我想要的信息,但由于维基百科的格式,有时我想丢弃一些信息。它的格式也不总是一致的;有时它在多行上,有时只有一行,但我想要的信息始终在“[[”和“]]”之间分隔。我只想保留 [[ 和 ]] 之间的文本,而忽略其余部分。到目前为止,我发现的所有解决方案都使用 sed 并依赖于一致的格式。基本上我想要做的是采用格式化的长字符串:
{{[[abcd]]efgh[[hijk]]lmno
[[pqrs]]
[[tuvw]]yz}}
并创建一个包含值
的数组
abcd
hijk
pqrs
tuvw
使用 GNU grep 和 Perl-compatible 正则表达式 (PCRE):
grep -Po '(?<=\[\[).*?(?=]])' file
输出:
abcd
hijk
pqrs
tuvw
我正在尝试创建一个 bash 脚本,该脚本使用通过 curl 从维基百科提取的信息来帮助整理我的音乐 collection。我已经得到可靠的 return 我想要的信息,但由于维基百科的格式,有时我想丢弃一些信息。它的格式也不总是一致的;有时它在多行上,有时只有一行,但我想要的信息始终在“[[”和“]]”之间分隔。我只想保留 [[ 和 ]] 之间的文本,而忽略其余部分。到目前为止,我发现的所有解决方案都使用 sed 并依赖于一致的格式。基本上我想要做的是采用格式化的长字符串:
{{[[abcd]]efgh[[hijk]]lmno
[[pqrs]]
[[tuvw]]yz}}
并创建一个包含值
的数组abcd
hijk
pqrs
tuvw
使用 GNU grep 和 Perl-compatible 正则表达式 (PCRE):
grep -Po '(?<=\[\[).*?(?=]])' file
输出:
abcd hijk pqrs tuvw