运行后
test = $(安全2>& 1> / dev / null find-generic-password -ga test)回音 $测试
输出
密码:" 1234"
我想删除所有内容,只保留实际密码,在这种情况下只需
1234
任何帮助?
答案 0 :(得分:1)
如果格式始终为password: "value"
,则可以使用高效而不使用任何外部实用程序仅使用子字符串扩展:
echo "${test:11:-1}" #output: 1234
如果您坚持使用其他实用程序:
awk -F'"' '{ print $2 }' <<< "$test" #output: 1234
cut -d'"' -f2 <<< "$test" #output: 1234
如果密码中包含"
字符,则上述两个命令都将失败。使用sed
在密码中使用"
正常工作的另一种解决方案:
sed 's/^password: "\(.*\)"$/\1/' <<< "$test" #output: 1234
答案 1 :(得分:0)
您可以通过以下方式解决:
命令:
echo 'password: "1234"' | awk -F"\"" '{print $2}'
输出:
1234
答案 2 :(得分:0)
如果你的系统有一个用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