regex - 如何从 bash 中一行的两个分隔符之间提取文本?

标签 regex bash

我可以在 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/

相关文章:

linux - 每 60 秒复制一个文件 bash

linux - Sudoers 文件中的 Bash 脚本,但希望该脚本在特定条件下询问根密码

bash - 检查管道 grep 的输出

c# - 正则表达式:如何获取没有前导数字的文件名?

java - Java 中的正则表达式没有按我的预期工作

arrays - 突出显示 'comm' 命令输出

linux - 用于克隆目录的 Shell 脚本

java - 使用正则表达式提取字符串

php - 这个正则表达式有什么作用

python - 在 Windows 上使用 bash 调用 python 时使用 linux 样式路径