使用AWK提取Payload文件中name字段的精确值
用AWK提取Payload中name字段的值
这里有几个实用的AWK方案,帮你精准提取name字段对应的值——不管这个值是纯字母、字母数字组合,还是10位以内的字符串都能搞定:
方案1:正则捕获(最鲁棒,推荐)
这种方法通过正则捕获组直接匹配"name": "值"的格式,不管name字段在文本的哪个位置都能生效:
awk 'match($0, /"name": "([^"]+)"/, result) {print result[1]}' payload.txt
原理说明:
match($0, /"name": "([^"]+)"/, result):扫描整行文本,匹配"name": "xxx"的模式,把捕获到的xxx([^"]+会匹配除双引号外的任意字符,完美贴合你的值规则)存入数组resultprint result[1]:输出捕获组里的内容,也就是你要的name字段值
方案2:分隔符拆分(适合格式固定的场景)
如果你的Payload格式固定,name字段的位置不会变,可以用双引号作为分隔符来拆分文本:
awk -F'"' '/"name":/ {print $8}' payload.txt
原理说明:
-F'"':把双引号设为字段分隔符/name":/:只处理包含"name":的行print $8:你的示例文本拆分后,目标值正好是第8个字段(可以自行数拆分后的字段顺序验证)
测试示例
假设你的payload.txt内容是:
"mobileAppTunnel": "disabled","name": "t1"
运行任意一个命令,都会输出:
t1
如果name的值换成abc123或者test123456(10位),也能正确提取对应的值。
内容的提问来源于stack exchange,提问作者Sanjay Shitole
相关产品推荐
相关产品推荐

