删除每个 . after ] 出现在完整文本文件的一行中

删除每个 . after ] 出现在完整文本文件的一行中

我有一个文件,需要删除其中的 .每行的 ] 之后

例如

xyz[1.2]35.23
xyz[1.2.3]35.234

输出应该是

xyz[1.2]3523
xyz[1.2.3]35234

答案1

要删除最右边的点之后的点]

sed -e :1 -e 's/\(][^]]*\)\.\([^]]*\)$/\1\2/;t1'

或者:

awk -F']' -vOFS=']' 'NF>1 {gsub(/\./,"",$NF)};1'

或者:

perl -pe 's/.*\]\K.*/$&=~s|\.||gr/e'

删除后]不管]右边是否有其他。

sed -e :1 -e 's/\(].*\)\./\1/;t1'

或者:

perl -pe 's/.*?\]\K.*/$&=~s|\.||gr/e'

答案2

perl

$ perl -pe 's/(?<=])\d+\K\.//g' file
xyz[1.2]3523
xyz[1.2.3]35234

相关内容