我有一个变量如下
a =“我的名字是A.她的名字是B.他的名字是C”
我需要在“name”和“。”之间打印文本。
预期输出
is A
is B
is C
编辑:解决方案应该适用于Solaris和Linux计算机
答案 0 :(得分:3)
这适用于GNU grep
$ grep -ioP '(?<=name ).+?(?=\.|$)' <<< "$a"
is A
is B
is C
这适用于带有/ usr / xpg4 / bin / awk
的solaris 5.8$ echo "$a" | awk -F '[nN]ame |\\.' '{for (i=2; i<=NF; i+=2) print $i}'
is A
is B
is C
答案 1 :(得分:3)
使用awk:
echo "$a"|awk -F '[nN]ame ' '{print $2}' RS='.'
is A
is B
is C
答案 2 :(得分:2)
假设您在Solaris上有bash
,则以下内容应该有效:
while read -r l; do
echo "${l//*[Nn]ame /}";
done < <(tr '.' '\n' <<< "$a")
为了您的输入,它会产生:
is A
is B
is C