准备一个文件以输入mysql

时间:2016-03-17 14:56:13

标签: mysql bash

我有一个分成几个部分的文件。每个部分都以标题开头,例如:

Company,CountryA,-,-,-,-
then 1 to 20 lines of data with the following format
,,date,CompanyA,valueA1,valueA2
,,date,CompanyB,valueB1,valueB2
,,date,CompanyC,valueC1,valueC2
,,date,CompanyD,valueD1,valueD2
Company,CountryB,-,-,-,-
then more data
,,date,CompanyE,valueE1,valueE2
,,date,CompanyF,valueF1,valueF2
,,date,CompanyG,valueG1,valueG2

我需要做的是将其转换为具有以下格式的文件。

Company,CountryA,-,-,-,-,,date,CompanyA,valueA1,valueA2
Company,CountryA,-,-,-,-,,date,CompanyB,valueB1,valueB2
Company,CountryA,-,-,-,-,,date,CompanyC,valueC1,valueC2
Company,CountryB,-,-,-,-,,date,CompanyD,valueD1,valueD2
Company,CountryB,-,-,-,-,,date,CompanyE,valueE1,valueE2
Company,CountryB,-,-,-,-,,date,CompanyF,valueF1,valueF2
Company,CountryB,-,-,-,-,,date,CompanyG,valueG1,valueG2

即。我需要一个脚本,它将遍历文件并读取每一行,如果它找到一行起始公司它保存它添加将其添加到后续行的开头(如果它开始,,)直到该行再次以公司开始。

我确信这可能是一种简单的方法,但它超出了我的简单脚本功能。

1 个答案:

答案 0 :(得分:0)

使用sed:

sed -n '/^Company/h;{/^,,/{G;s/\(.*\)\n\(.*\)/\2\1/p}}' file

Company开头的行被添加到保留空间,以,,开头的后续行前置保留行。