在以下情况下,如何使用shell脚本在remember=
之后获取值:
情况1:
String= " password sufficient shape sha512 remember=5"
情况2:
String= " password sufficient shape remember=5 sha512"
在两种情况下,如何使用sed命令在=
之后获取值。输出应为5
答案 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
错误。