我仍然有一个奇怪的格式化的数据集,它是基于天气数据的,我怀疑这是SED的工作。数据要么是条目之间的空白,要么是带有标识符的2个空格。我正在尝试编写一个shell脚本以获取此数据并将其转换为CSV文件。我用AWK替换了逗号分隔的空格,但是后来我意识到空格的数量是不同的,因为有人决定做一些棘手的事情。例如,我有一个子集:
USH00011084 1897 734 3 1292 3 1972 3 1786 3 2084 3 2761 3 2753 3 2547 3 2406 3 1878 3 -9999 -9999
USH00011084 1900 -9999 -9999 1337a 3 1936 3 2378 3 2589 3 2770 3 2872 3 2700 3 2320 3 1486 3 1100 3
USH00011084 1926 -9999 1245 1251a 1781 2240 2654 2712 2763c 2770 2110 1256a 1421
USH00011084 1927 1209 1821 1651 2183 2467 2707 2730 2594a 2579 2081 1907 871f 3
USH00011084 1928 800b 1135 1614 1711 2218 2596 2829 2817 -9999 -9999 -9999 -9999
我认为如果少于5个空格,可以使用SED放入逗号;如果少于5个空格,则可以使用两个逗号。但是,我还没有弄清楚。任何建议将不胜感激。
我会说...
sed -e 's/ /,,/g' -e 's/ \+/,/g' file
或者,更干净一点:
sed -re 's/ {5}/,,/g' -e 's/ +/,/g' file
两者都会产生:
USH00011084,1897,734,3,1292,3,1972,3,1786,3,2084,3,2761,3,2753,3,2547,3,2406,3,1878,3,-9999,-9999,
USH00011084,1900,-9999,-9999,,1337a,3,1936,3,2378,3,2589,3,2770,3,2872,3,2700,3,2320,3,1486,3,1100,3
USH00011084,1926,-9999,,1245,,1251a,1781,,2240,,2654,,2712,,2763c,2770,,2110,,1256a,1421,
USH00011084,1927,1209,,1821,,1651,,2183,,2467,,2707,,2730,,2594a,2579,,2081,,1907,,,871f,3
USH00011084,1928,800b,1135,,1614,,1711,,2218,,2596,,2829,,2817,-9999,-9999,-9999,-9999,
您提到的逻辑是:
,,
。,
。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句