提取最后一个冒号之前的字符

Nan*_*ani 5 sed awk text-processing

我需要提取最后一个冒号之前的字符,:并删除[]最后一行中的方括号。我的文件结构是

256.XXX.XXX.X:20234
214.XXX.XXX.X:7249
[2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX]:46288
Run Code Online (Sandbox Code Playgroud)

我需要以下形式的输出文件:

256.XXX.XXX.X
214.XXX.XXX.X
2200:XXXX:XXXX:XXX:XXXX:XXXX:XXXX:XXXX
Run Code Online (Sandbox Code Playgroud)

Sté*_*las 10

删除最后一个冒号之后的所有内容,然后将任何括号留在任何位置:

sed 's/:[^:]*$//; s/[][]//g'
Run Code Online (Sandbox Code Playgroud)

或者

sed 's/\(.*\):.*/\1/; s/[][]//g'
Run Code Online (Sandbox Code Playgroud)

(这里使用第一个.*会贪婪并吞下尽可能多的:s的事实)。