Bash 从键链输出中删除字符串
跑步后 test=$security 2>&1>/dev/null查找通用密码-ga-test-echo $test 输出是 密码:1234 我想删除所有内容,只保留实际密码,在这种情况下,只需 1234 有任何帮助吗?如果格式始终为password:value,则无需任何外部实用程序,只需使用子字符串扩展即可有效地执行此操作:Bash 从键链输出中删除字符串,bash,shell,awk,sed,cut,Bash,Shell,Awk,Sed,Cut,跑步后 test=$security 2>&1>/dev/null查找通用密码-ga-test-echo $test 输出是 密码:1234 我想删除所有内容,只保留实际密码,在这种情况下,只需 1234 有任何帮助吗?如果格式始终为password:value,则无需任何外部实用程序,只需使用子字符串扩展即可有效地执行此操作: echo "${test:11:-1}" #output: 1234 如果您坚持使用其他实用程序: awk -F'"' '{ print $2 }' <<
echo "${test:11:-1}" #output: 1234
如果您坚持使用其他实用程序:
awk -F'"' '{ print $2 }' <<< "$test" #output: 1234
cut -d'"' -f2 <<< "$test" #output: 1234
您可以通过以下方式解决此问题:
命令:
echo 'password: "1234"' | awk -F"\"" '{print $2}'
输出:
1234
在Grep中使用与Perl兼容的正则表达式
如果您的系统具有使用PCRE引擎编译的grep,例如pcregrep或对grep-p的支持,则可以将pcregrep-o':\K[^]+'放入管道中。例如,要仅将引号之间的材料发送到标准输出,请执行以下操作:
$ echo 'password: "1234"' | pcregrep -o ': "\K[^"]+'
1234
$ echo 'password: "ABCD"' | pcregrep -o ': "\K[^"]+'
ABCD
$ echo 'password: "1A2B3C4D"' | pcregrep -o ': "\K[^"]+'
1A2B3C4D
在上面运行awk-F\{print$2}它做到了!谢谢你的快速帮助,很高兴它能帮上忙。请核对我的答案或投赞成票:
$ echo 'password: "1234"' | pcregrep -o ': "\K[^"]+'
1234
$ echo 'password: "ABCD"' | pcregrep -o ': "\K[^"]+'
ABCD
$ echo 'password: "1A2B3C4D"' | pcregrep -o ': "\K[^"]+'
1A2B3C4D