여러 시퀀스에 누락된 문자열 삽입

여러 시퀀스에 누락된 문자열 삽입

다음과 같은 다중 열 파일이 있습니다.

   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...

나는 주어진 답변을 시도했습니다여기,여기그리고여기그러나 이들 중 어느 것도 이 문제에 적용되지 않는 것 같습니다(또는 적어도 올바르게 적용하는 방법을 모르겠습니다).

답변1

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

관련 정보