2017-05-03 21 views
0

我有这样的事情将文本多行与规范打成一行。数据

Title : Magic Moments     Artist: Perry Como 
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 7 

我需要这个

Magic Moments,Perry Como,Original American Songbook: 50,2005,Other (12),DrBN,7 

我是新与bash和我不知道我可以给你帮助得到这个 谢谢!

编辑

Title : Magic Moments     Artist: Perry Como      
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 7 
Title : Stormy Weather     Artist: Frank Sinatra     
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 8 
Title : Let There Be Love    Artist: Sammy Davis, Jr.    
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 9 
Title : Makin' Whoopee     Artist: Esther Williams    
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 10 
Title : Spanish Eyes     Artist: Al Martino      
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 11 
Title : 'S Wonderful {From An American Artist: Gene Kelly; Georges Guétary 
Album : Original American Songbook: 50 Year: 2005, Genre: Other (12) 
Comment: DrBN       Track: 12 
Title : Out Of My Head     Artist: John Newman     
Album : Tribute (Deluxe Edition)  Year: 2013, Genre: Pop (13) 
Comment: no coment      Track: 6 
+0

我想,单词'Songbook'应该被跳过,因为列名 – RomanPerekhrest

+0

你有没有做足够的研究来解决这个问题,然后发布在这里? – Inian

+0

RomanPerekhrest没有这是从文件中的数据,它不能被跳过 英语是我已阅读有关文本转换,但这个例子现在似乎有点太难了。 我知道该怎么做,但我不知道如何。 1)删除'列'之间的空间 2)删除新的线标记 3)也许得到的值过去: – Eken

回答

0

使用sedpaste,如

sed 's/Title *: //;s/ *Artist: /,/;s/Album *: //; s/ *Year: /,/;s/ *Genre: //;s/Comment: //;s/ *Track: /,/' | paste -sd, 

当然,如果你有多个记录/专辑/歌曲,或如果字段名称可能会发生变化,有更好的解决方案。

+0

谢谢,它对我来说是一个坚实的基础,因为你写的名字可能会改变,再次感谢! – Eken