请指教如何使用 awk 从版本号中仅删除第二个“。”字符
我需要适合 Linux 和 Solaris 的语法
我写
sed "s'/\./ /g'" -
但此语法从版本号中删除所有“。”
例如(之前的版本号)
34.34.55.4
经过 sed 操作后
34.34 55.4
答案1
echo -e '1.2.3.4\n2.3.4\n5.6.7.8' | sed 's/\([^.]*\.[^.]*\)\./\1 /'
括号内的部分将匹配“没有点的东西,一个点,没有点的东西”。替换文本中的 \1 将引用此子匹配。
然而,给出的另一种解决方案可以说更加优雅;-)
答案2
$ sed 's/\./ /2' <<<'34.34.55.4'
34.34 55.4
答案3
使用GNU Awk
:
命令:
awk '$0 = gensub( /\./, " ", 2 )' <<<"34.34.55.4"
输出:
34.34 55.4