如何用bash中的一行替换文本

时间:2014-11-02 20:22:25

标签: sed

我有这样的txt文件:

Linux Mint 17   
Ubuntu 14.04   
Debian GNU/Linux 7.0   
Mageia 4   
Fedora 20   
openSUSE 13.1   
Arch Linux   
CentOS 7.0-1406  
PCLinuxOS 2014.07   
Slackware Linux 14.1   
FreeBSD   

我需要获取版本号并将其放在一行的开头。

1 个答案:

答案 0 :(得分:1)

Whit awk你可以这样做:

awk '$NF~/[0-9\.]+/ {f=$NF;$NF="";$0=f FS$0}1' file
17 Linux Mint
14.04 Ubuntu
7.0 Debian GNU/Linux
4 Mageia
20 Fedora
13.1 openSUSE
Arch Linux
7.0-1406 CentOS
2014.07 PCLinuxOS
14.1 Slackware Linux
FreeBSD

如果最后一个字段包含任何数字,请将其移至前面位置。