【发布时间】:2019-10-31 16:33:42
【问题描述】:
在 Bash 中,我有一个数组 names,其中包含字符串值
Dr. Praveen Hishnadas
Dr. Vij Pamy
John Smitherson,Dr.,Service Account
John Dinkleberg,Dr.,Service Account
我只想捕获名称
Praveen Hishnadas
Vij Pamy
John Smitherson
John Dinkleberg
并将它们存储回原始数组中,覆盖其未经处理的版本。
我有以下 sn-p 代码 请注意,我正在 Perl (-P) 中执行正则表达式
for i in "${names[@]}"
do
echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1
done
产生输出
Dr. Praveen Hishnadas
Dr. Vij Pamy
John Smitherson
John Dinkleberg
问题:
1) 我是否错误地使用了环视命令?:?我正在尝试选择匹配“博士”。尽管
没拍到
2) 我如何将该回显的结果存储回数组名称中?我尝试将其设置为
i=echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1
i=$(echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1)
i=`echo $i|grep -P '(?:Dr\.)?\w+ \w+|$' -o | head -1`
但无济于事。我 2 天前才开始学习 bash,我觉得我的语法有点不对劲。任何帮助表示赞赏。
【问题讨论】: