我试图理解awk和sed中的开关和args
例如,要获取行中nonce旁边的数字,请从文件response.xml中获取
WWW-Authenticate: ServiceAuth realm="WinREST", nonce="1828HvF7EfPnRtzSs/h10Q=="
我通过另一位成员的建议使用
nonce=$(sed -nE 's/.*nonce="([^"]+)"/\1/p' response.xml)
在我尝试下面的行中获取单词idOperation旁边的数字:
idOper=$(sed -nE 's/.*idOperation="([^"]+)"/\1/p' zarph_response.xml)
行提取数字:
{"reqStatus":{"code":0,"message":"Success","success":true},"idOperation":"185-16-6"}
如何获得185-16-6?
如果要提取的数据没有"" 喜欢operStatus旁边的1?
{"reqStatus":{"code":0,"message":"Success","success":true},"operStatus":1,"amountReceived":0,"amountDismissed":0,"currency":"EUR"}
答案 0 :(得分:0)
关注awk
可能对您有帮助。
awk -F"\"" '/idOperation/{print $(NF-1)}' Input_file
解决方案第二: 在sed
以下内容可能对您有所帮助。
sed '/idOperation/s/\(.*:\)"\([^"]*\)\(.*\)/\2/' Input_file
编辑: 如果您想获取字符串operStatus
后面的数字,那么以下内容可能对您有帮助。
awk 'match($0,/operStatus[^,]*/){;print substr($0,RSTART+12,RLENGTH-12)}' Input_file
答案 1 :(得分:0)
使用grep perl-style regexes
grep -oP "nonce=\"\K(.*)?(?=\")" Input_file
grep -oP "idOperation\":\"\K(.*)?(?=\")" Input_file
如果输入是json,你可以使用jq
jq .idOperation Input_file