如何将awk提取的带点版本号转换为无点连续整数?
如何将带点的版本号转换为无点整数形式
方法1:用awk的gsub直接替换(最简洁)
无需拆分,直接全局替换版本号中的所有.为空字符串,合并为单条awk命令更高效:
awk '/abc/{gsub(/\./, "", $3); print $3}' somefile
如果要保留原有的管道结构:
grep abc somefile | awk '{print $3}' | awk '{gsub(/\./, ""); print}'
原理:gsub(/\./, "", $3) 会把匹配到abc的行中第三个字段的所有.替换为空,直接输出处理后的字段。
方法2:用split拆分后手动拼接(对应你尝试的split思路)
如果一定要用split实现,可以自己循环拼接数组元素:
grep abc somefile | awk '{print $3}' | awk '{ split($0, parts, /\./); result = ""; for (i=1; i<=length(parts); i++) { result = result parts[i]; } print result; }'
原理:先用split把版本号按.拆分为数组parts,再通过循环将数组元素逐个拼接成无点字符串,最后输出结果。
方法3:用sed快速替换
sed的替换语法也能轻松实现:
grep abc somefile | awk '{print $3}' | sed 's/\.///g'
或者直接用sed完成提取+替换:
grep abc somefile | sed -E 's/^.*abc.* ([0-9.]+)$/\1/; s/\.///g'
原理:s/\.///g 全局替换所有.为空字符串,一步到位去掉所有点。
内容的提问来源于stack exchange,提问作者Vijesh
相关产品推荐
相关产品推荐

