Text-Processing
在多個有序列中插入缺失的字元串
我有一個看起來像這樣的多列文件:
6 93129B 177 306.98 350.20 8.84 0.23 -0.79 0.22 0.46 m 7 8 192 269.08 413.35 9.29 0.15 -0.81 0.14 0.33 m 32 Y582 506.12 797.42 11.60 1.07 0.82 89 nm 9 35 316 FA35 -241.54 431.17 9.85 1.30 0.92 0.54 0 nm 10 61 Y579 765.80 819.03 9.97 0.32 -0.66 77 m 11 9 165 346.38 360.62 9.99 0.17 -0.83 0.16 0.41 m 12 30 71 Y500 720.08 40.65 10.10 0.43 -0.41 0.41 0.85 83 m 13 127 200 FA127 250.63 -35.95 10.68 0.31 -0.57 0.32 0.72 96 m 14 3 149 375.53 334.00 10.73 0.28 -0.65 0.23 0.49 m 15 21 127 Y547 459.69 280.64 10.78 0.35 -0.67 0.28 0.61 81 m 16 126 195 FA126 268.94 12.08 10.93 0.35 -0.43 0.34 0.77 96 m 17 328.30 358.74 10.94 0.17 -0.72 0.16 0.39 m 18 92 585.72 -41.89 11.02 0.41 -0.44 0.46 1.01 m 19 4 163 Y551 348.90 302.36 11.04 0.26 -0.68 0.23 0.51 95 m
請注意,這些列是有序的,但其中許多都缺少許多元素。我需要用一個字元串填充這些空格,比如說
--
它看起來像:6 93129B 177 -- 306.98 350.20 8.84 0.23 -0.79 0.22 0.46 -- m 7 8 192 -- 269.08 413.35 9.29 0.15 -0.81 0.14 0.33 -- m 32 -- -- Y582 506.12 797.42 11.60 1.07 0.82 -- -- 89 nm 9 35 316 FA35 -241.54 431.17 9.85 1.30 0.92 0.54 -- 0 nm 10 -- 61 Y579 765.80 819.03 9.97 0.32 -0.66 -- -- 77 m 11 9 165 -- 346.38 360.62 9.99 0.17 -0.83 0.16 0.41 -- m 12 30 71 Y500 720.08 40.65 10.10 0.43 -0.41 0.41 0.85 83 m etc...
如果您有 GNU awk(或支持該
FIELDWIDTHS
變數的等價物),並且您不介意--
標記在欄位寬度內右對齊,那麼您可以執行類似的操作gawk -vFIELDWIDTHS="4 7 4 6 8 8 6 8 8 8 7 5 4" -vOFS= ' {for (i=1;i<=NF;i++) sub(" $","--",$i);}1 ' file
即。
$ gawk -vFIELDWIDTHS="4 7 4 6 8 8 6 8 8 8 7 5 4" -vOFS= ' {for (i=1;i<=NF;i++) sub(" $","--",$i);}1 ' file 6 93129B 177 -- 306.98 350.20 8.84 0.23 -0.79 0.22 0.46 -- m 7 8 192 -- 269.08 413.35 9.29 0.15 -0.81 0.14 0.33 -- m 32 -- -- Y582 506.12 797.42 11.60 1.07 0.82 -- -- 89 nm 9 35 316 FA35 -241.54 431.17 9.85 1.30 0.92 0.54 -- 0 nm 10 -- 61 Y579 765.80 819.03 9.97 0.32 -0.66 -- -- 77 m 11 9 165 -- 346.38 360.62 9.99 0.17 -0.83 0.16 0.41 -- m 12 30 71 Y500 720.08 40.65 10.10 0.43 -0.41 0.41 0.85 83 m 13 127 200 FA127 250.63 -35.95 10.68 0.31 -0.57 0.32 0.72 96 m 14 3 149 -- 375.53 334.00 10.73 0.28 -0.65 0.23 0.49 -- m 15 21 127 Y547 459.69 280.64 10.78 0.35 -0.67 0.28 0.61 81 m 16 126 195 FA126 268.94 12.08 10.93 0.35 -0.43 0.34 0.77 96 m 17 -- -- -- 328.30 358.74 10.94 0.17 -0.72 0.16 0.39 -- m 18 -- 92 -- 585.72 -41.89 11.02 0.41 -0.44 0.46 1.01 -- m 19 4 163 Y551 348.90 302.36 11.04 0.26 -0.68 0.23 0.51 95 m