You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用awk提取input.txt中单引号内内容并去除多余逗号?

解决方法

以下几种awk命令可以满足你的需求:

方法1:正则捕获组提取

利用awk的match函数匹配单引号内的内容,通过捕获组直接提取目标值:

awk '{match($0, /\'lhs\' : \'([^\']+)\'/, lhs); match($0, /\'rhs\' : \'([^\']+)\'/, rhs); print lhs[1], rhs[1]}' input.txt

原理:用正则匹配'lhs' : 'XXX'和'rhs' : 'XXX'的格式,把XXX部分捕获到数组中,直接输出捕获的内容。

方法2:自定义字段分隔符

通过设置字段分隔符为单引号、逗号、冒号、空格的组合,直接定位到目标字段:

awk -F"[':, ]+" '{print $6, $10}' input.txt

原理:把所有非目标内容的符号都设成分隔符,这样原本的数值就变成了独立的字段,直接提取对应位置的字段即可。

方法3:修改原字段内容

基于你最初的命令,对提取出的字段做清洗,去掉单引号和逗号:

awk '{gsub(/['',]/, "", $5); gsub(/['']/, "", $8); print $5, $8}' input.txt

原理:用gsub函数把$5里的单引号和逗号替换为空,把$8里的单引号替换为空,再输出处理后的字段。

以上三种方法执行后,都会得到你想要的输出:

0 \emptyset
6 \partial

内容的提问来源于stack exchange,提问作者Tryer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 07:31:18