awk/sed + 仅用一个空格替换第二个字符

awk/sed + 仅用一个空格替换第二个字符

请指教如何使用 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

相关内容