我可以在 bash 中编写的正则表达式是什么,用于解析一行并提取可以在两个 | 之间找到的文本。 (例如:1: |hey| 2: |boy|)并将这些单词保存在某种数组中?
最佳答案
不需要复杂的正则表达式。按“|”拆分,然后每个第二个元素就是您想要的
#!/bin/bash
declare -a array
s="|hey| 2: |boy|"
IFS="|"
set -- $s
array=($@)
for((i=1;i<=${#array[@]};i+=2))
do
echo ${array[$i]}
done
输出
$ ./shell.sh
hey
boy
使用awk
$ echo s="|hey| 2: |boy|" | awk -F"|" '{for(i=2;i<=NF;i+=2)print $i}'
hey
boy
关于regex - 如何从 bash 中一行的两个分隔符之间提取文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2603661/