如何使用sed命令在'='之后获取值

时间:2019-12-02 08:49:52

标签: bash shell sed grep

在以下情况下,如何使用shell脚本在remember=之后获取值:

情况1:

    String= " password   sufficient  shape sha512 remember=5"

情况2:

     String= " password   sufficient shape remember=5 sha512"

在两种情况下,如何使用sed命令在=之后获取值。输出应为5

2 个答案:

答案 0 :(得分:0)

echo ${string} | grep -Po "remember=[0-9]+" | awk -F'=' '{print $2}'

答案 1 :(得分:0)

使用sed:只需将整个字符串与remember=匹配,后跟反向引用。在反向引用内匹配要与值匹配的字符。并将整个字符串替换为反向引用。

String=" password   sufficient shape remember=5 sha512"
sed 's/.*remember=\([0-9]\{1,\}\).*/\1/' <<<"$String"

将输出:

5

使用bash:删除所有内容,直到remember=,然后从备份中删除所有内容,直到空格:

String=" password   sufficient shape remember=5 sha512"
a=${String##*remember=};
a=${a%% *};
echo $a

awk中:遍历参数并检查其是否为“记住”。然后在=之后提取数据:

String=" password   sufficient shape remember=5 def";
<<<"$String" awk '{ for (i=0;i<=NF;++i) { b=$i; c=$i; gsub(/=.*/, "", b); if (b == "remember") { gsub(/.*=/, "", c); print c; } } }'

注意:您问题中的两个相似的源代码行

   String= " password   sufficient  shape sha512 remember=5"

两者都给我相似的

bash:  password   sufficient  shape sha512 remember=5: command not found

错误。