linux终端文本操作

时间:2015-09-04 18:51:40

标签: linux bash terminal

我正在研究linux命令行,这个问题在我的脑海中已经有将近一个星期但是我认为我还没有找到最佳解决方案,问题是下一个:我有文件格式错误,每个字一个字行:

SUSE

FEDORA

SUSE

UBUNTU

FEDORA


10.2 

10 

11.0 

8.04 

8 
10.3 

6.10 

2006-12-07 

2008-11-25 

2008-06-19 

2008-04-24 

2007-11-08 

2007-10-04 

2006-10-26 

2007-05-31 

2007-10-18 

正如您所看到的那些是具有版本和发布日期的Linux发行版,正确的格式化是下一个:

2008-11-25  SUSE    10.2

2008-06-19  FEDORA  10

2008-04-24  SUSE    11.0
...

我相信必须有一种非常简单的方法来对此进行排序,我的意思是使用一行命令,而不是保存在其他文件中然后粘贴到其他文件中。

2 个答案:

答案 0 :(得分:1)

我从你那里收到了匹配数量的物品

SUSE
FEDORA
SUSE
UBUNTU
FEDORA
10.2
10
11.0
8.04
8 10.3
2006-12-07
2008-11-25
2008-06-19
2008-04-24
2007-11-08

此脚本将转换为3列并重新排序字段

pr -3t filename | awk '{print $3,$1,$2}'

2006-12-07 SUSE 10.2
2008-11-25 FEDORA 10
2008-06-19 SUSE 11.0
2008-04-24 UBUNTU 8.04
10.3 FEDORA 8

答案 1 :(得分:0)

您可以运行vi filename,然后执行:g / ^ $ / d作为换行符。

然后,为了定位,您可以使用Ctrl-v和y进行复制。您可能需要在版本的最后一行添加空格,以便可以在可视块模式下将其全部复制。然后,您可以使用Shift-p粘贴到块中。