我正在尝试使用sed
匹配第2列(结束TLD)中的正则表达式对文件中的行进行排序。
这是一个示例文件:
server7, server.com,someval
server6, server.com, someval
server4, server.uk, someval
server2, server.com, someval
server10, server.us, someval
server7, server.uk, someval
server10, server.uk, someval
server10, server.us, someval
我试过了:
sed -r "s/(.*\.com.*)|(.*\.uk.*)|(.*\.us.*)/\3\2\1/g" file
但是,它会重现相同的输出,不做任何更改。
我希望我的文件排序如下:
server7, server.com,someval
server6, server.com, someval
server2, server.com, someval
server10, server.us, someval
server7, server.uk, someval
server10, server.uk, someval
server10, server.us, someval
server10, server.us, someval
感谢您的帮助。
答案 0 :(得分:3)
如果您可以使用.
作为字段分隔符,则可以对文件进行排序,例如:
sort -t. -k2,2 file
以上(当然)需要在行中具有相同数量的.
点(至少在前2列中)。
正如@ mklement0在编辑中所说:使用-k2,2
代替普通-k2
更好,因为:
它更清晰(更强大,更有效)限制排序到 感兴趣的领域 - 如果你没有指定一个结束字段,一切 到行尾已排序