【发布时间】:2017-03-15 00:28:11
【问题描述】:
我有一个大文件,我需要使用第 6 列唯一值进行拆分,但各列之间用 ~ 分隔
如何在 Ubuntu 中使用“awk”命令来实现这一点?我的文本文件很大,有超过 400,000 行。
提前致谢。
2016~02~ MP~0639161~0090~13~177~0081~02~0200~ .8500~ 8.8500~ 27.00~0530~9970~ TAYA~1.000~ 33.0~ 40.0~ 8,124 ~ 905 ~ 425 ~ ~00060~2006~ ~ ~ ~ ~2007~ ~ ~ ~ ~2008~ ~ ~ ~ ~2009~ ~ ~T~ 47.0~2010~ 481.70~ 24.80~A~ 19.0~2011~ ~ ~Z~ ~2012~ 261.90~ 24.80~A~ 11.0~2013~ ~ ~Z~ ~2014~ 1,349.33~ 24.90~A~ 54.0~2015~ ~ ~Z~ ~ ~ ~ 0.00~ 0.00
2016~02~ MP~0639161~0080~13~177~0081~02~0200~ .8500~ 8.8500~ 18.40~0530~9970~ TAYA~1.000~ 40.0~ 45.0~ 6,237 ~ 554 ~ 260 ~ ~00120~2006~ ~ ~ ~ ~2007~ ~ ~ ~ ~2008~ ~ ~ ~ ~2009~ ~ ~ ~ ~2010~ ~ ~T~ 47.0~2011~ ~ ~T~ 47.0~2012~ 211.00~ 18.40~A~ 11.0~2013~ ~ ~Z~ ~2014~ 1,038.34~ 18.40~A~ 56.0~2015~ ~ ~Z~ ~ ~ ~ 0.00~ 0.00
2016~02~ MP~0639166~0020~34~033~0011~02~0102~ .5000~ 5.1300~ 25.00~0030~0110~ ~ .500~ 62.0~ 62.0~ 1,988 ~ 70 ~ 23 ~ ~00170~2004~ 5,234.00~ 103.70~A~ 50.0~2005~ 6,481.00~ 94.40~A~ 69.0~2006~ 3,308.00~ 56.30~A~ 59.0~2007~ 6,548.00~ 96.10~A~ 68.0~2008~ 2,679.00~ 40.00~A~ 67.0~2011~ 2,226.00~ 39.40~A~ 56.0~2012~ ~ ~Z~ ~2013~ 1,766.00~ 40.00~A~ 44.0~2014~ 3,129.50~ 36.20~A~ 86.0~2015~ ~ ~Z~ ~ ~ ~ 0.00~ 0.00
输出1:
2016~02~ MP~0639161~0090~13~177~0081~02~0200~ .8500~ 8.8500~ 27.00~0530~9970~ TAYA~1.000~ 33.0~ 40.0~ 8,124 ~ 905 ~ 425 ~ ~00060~2006~ ~ ~ ~ ~2007~ ~ ~ ~ ~2008~ ~ ~ ~ ~2009~ ~ ~T~ 47.0~2010~ 481.70~ 24.80~A~ 19.0~2011~ ~ ~Z~ ~2012~ 261.90~ 24.80~A~ 11.0~2013~ ~ ~Z~ ~2014~ 1,349.33~ 24.90~A~ 54.0~2015~ ~ ~Z~ ~ ~ ~ 0.00~ 0.00
2016~02~ MP~0639161~0080~13~177~0081~02~0200~ .8500~ 8.8500~ 18.40~0530~9970~ TAYA~1.000~ 40.0~ 45.0~ 6,237 ~ 554 ~ 260 ~ ~00120~2006~ ~ ~ ~ ~2007~ ~ ~ ~ ~2008~ ~ ~ ~ ~2009~ ~ ~ ~ ~2010~ ~ ~T~ 47.0~2011~ ~ ~T~ 47.0~2012~ 211.00~ 18.40~A~ 11.0~2013~ ~ ~Z~ ~2014~ 1,038.34~ 18.40~A~ 56.0~2015~ ~ ~Z~ ~ ~ ~ 0.00~ 0.00
输出 2:
2016~02~ MP~0639166~0020~34~033~0011~02~0102~ .5000~ 5.1300~ 25.00~0030~0110~ ~ .500~ 62.0~ 62.0~ 1,988 ~ 70 ~ 23 ~ ~00170~2004~ 5,234.00~ 103.70~A~ 50.0~2005~ 6,481.00~ 94.40~A~ 69.0~2006~ 3,308.00~ 56.30~A~ 59.0~2007~ 6,548.00~ 96.10~A~ 68.0~2008~ 2,679.00~ 40.00~A~ 67.0~2011~ 2,226.00~ 39.40~A~ 56.0~2012~ ~ ~Z~ ~2013~ 1,766.00~ 40.00~A~ 44.0~2014~ 3,129.50~ 36.20~A~ 86.0~2015~ ~ ~Z~ ~ ~ ~ 0.00~ 0.00
【问题讨论】:
-
完成:请查看我的编辑。
-
哪一个是你的第六个字段(基于空格或~),拆分后第三个记录发生了什么?
-
第 6 个字段编号是:在此示例中为 13 和 34,但我在文本文件中有更多第 6 个字段编号。我没有在此处发布示例中的所有行。但是,我希望每个第 6 个字段的唯一编号都有单独的文件,例如基于上述 13 和 34。