我有一个具有以下模式的文件

12345343|559|-2,0,-200000,-20|20161108000000|FL|62,859,1439,1956|0,0,21300,0|S
7778880|123|500,100|20161108000000|AL|21,135|3|S


我正在寻找一种将多个记录映射到第三组和第六组值的方法

要求的输出:

12345343|559|-2|20161108000000|FL|62|0,0,21300,0|S
12345343|559|0|20161108000000|FL|859|0,0,21300,0|S
12345343|559|-200000|20161108000000|FL|1439|0,0,21300,0|S
12345343|559|-20|20161108000000|FL|1956|0,0,21300,0|S
7778880|123|500|20161108000000|AL|21|3|S
7778880|123|100|20161108000000|AL|135|3|S

最佳答案

这可能对您有用(GNU sed):

sed -r 's/^(.*\|.*\|)([^,]*),([^|]*)(\|.*\|.*\|)([^,]*),([^|]*)(.*)/\1\2\4\5\7\n\1\3\4\6\7/;P;D' file


迭代地将当前行拆分为几段,以换行分隔两行。第一行包含第三和第六行的开头,第二行包含第三和第六行的结尾。打印,然后删除第一行,然后重复直到第三和第六字段中的列表被使用。

关于linux - 分割逗号设置文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47406925/

10-11 01:09