首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在等号后用引号awk提取数字

在awk中,你可以使用正则表达式来匹配并提取等号后的数字。假设你的数据在一个名为data.txt的文件中,每行格式如下:

代码语言:txt
复制
key1="value1"
key2="value2 with 123 numbers"

你可以使用以下awk命令来提取等号后的数字:

代码语言:txt
复制
awk -F\" '{for(i=2;i<=NF;i+=2){if($i ~ /^[0-9]+$/) print $i}}' data.txt

解释:

  • -F\":设置字段分隔符为双引号,这样awk会将每行按照双引号分割成多个字段。
  • for(i=2;i<=NF;i+=2){...}:从第二个字段开始遍历,每次跳过一个字段(因为双引号之间的内容是我们关心的部分,而它们总是成对出现)。
  • if($i ~ /^[0-9]+$/):检查当前字段是否只包含数字。
  • print $i:如果当前字段只包含数字,则打印出来。

这个命令会输出:

代码语言:txt
复制
value1
123

注意,这个命令假设你的值要么完全是数字,要么不包含任何数字。如果你的数据格式更复杂,你可能需要调整正则表达式来适应不同的情况。

如果你想在等号后面直接提取数字,而不是整个值,你可以稍微修改一下正则表达式:

代码语言:txt
复制
awk -F\" '{for(i=2;i<=NF;i+=2){if($i ~ /^\"[0-9]+\"$/) sub(/^\"|\"$/,"",$i); if($i ~ /^[0-9]+$/) print $i}}' data.txt

这里使用了sub函数来去除双引号。最终输出将是:

代码语言:txt
复制
123

这个命令会忽略那些不包含数字的值。

参考链接:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的合辑

领券