bash - 从 bash 字符串获取(不切割)特定子字符串
问题描述
我想从字符串中获取子字符串 VALUE1 或 VALUE2 "VALUE3,VALUE2,VALUE4,VALUE9"
,如果没有这些,那么我的 $VAR 应该是空的。
我的字符串不能同时有两个子字符串,所以我们只有 3 种可能性。
VAR=VALUE1
VAR=VALUE2
VAR=NULL
我想在一行中做到这一点:
STRING="VALUE3,VALUE2,VALUE4,VALUE9,VALUE7"
VAR=`echo $STRING | grep -P "(VALUE1|VALUE2)"`
echo $VAR
VALUE2
解决方案
这将打印 NULL 以防万一VALUE1
或VALUE2
找不到它们。
echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '
{
if(match($0,/VALUE[12],|VALUE[12]$/)){
val=substr($0,RSTART,RLENGTH)
sub(/,/,"",val)
print val
}
else{
print "NULL"
}
}'
或将其用于变量用途,例如:
VAR=$(echo "VALUE3,VALUE1,VALUE4,VALUE9" | awk '{if(match($0,/VALUE[12],|VALUE[12]$/)){val=substr($0,RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
VALUE1
在 not和的情况下获取NULL
输出的示例:VALUE1
VALUE2
VAR=$(echo "VALUE3,VALUE12,VALUE4,VALUE9" | awk '{if(match($0,/VALUE[12],|VALUE[12]$/)){val=substr($0,RSTART,RLENGTH);sub(/,/,"",val);print val} else{print "NULL"}}')
echo "$VAR"
NULL
推荐阅读
- protractor - 无法使用非角度网页的量角器在 iframe 内定位元素
- python - 我应该如何覆盖 python 中 __init__ 方法的默认值?
- github - TRN-Pytorch 模型 - RuntimeError: Dimension out of range (expected to be in range of [-1, 0], but got 1)
- ios - 具有多个部分数据问题的双向滚动collectionView
- python - 在上游添加变量以计算 hessian 矩阵
- c# - 使用表达式从 lambda 函数获取导数
- c# - 无法在 ASP MVC 项目中设置“会话”
- replace - 在记事本++中逐行删除引号之间的所有换行符?
- c# - 当我添加这么多图表时,Oxyplot 抛出异常
- windows - 当 PROPERTY=value 包含引号内的空格时,MSIEXEC 未安装