簡體   English   中英

使用awk分隔大小不同的空白並將零添加到列中

[英]Separating different sized blank spaces with awk and adding zeros to a column

我在處理由不同大小的空白空間和不同大小的元素分隔的表時遇到麻煩。 理想情況下,我希望所有字段都用制表符分隔。 我還想向空白的任何字段元素添加零條目。 鑒於字段之間存在不同大小的空格,因此不確定awk FS / OFS是否是此處最合適的方法。

如果我執行awk'{print $ 4}',則會在第三行之后的條目上得到列4和列5的組合。 所以我覺得我需要一個正式的分隔符。

當前代碼(分隔符不同大小的空格):

   1         0.98809     1.28484E-01 2.15265E-02 1.0559      1.1562      212.92      1.2248
   2         1.0222      5.81189E-01 1.24861E-04 1.0222      1.2548      216.26      1.8981
   3         1.1162      1.11291E-02             1.1256      1.2642      222.04      4.0946
   4         1.1922      2.0822                  1.1219      1.2826      216.16      4.1229

預期的代碼(分隔符選項卡,其中添加了零以填充空白):

   1         0.98809     1.28484E-01 2.15265E-02 1.0559      1.1562      212.92      1.2248
   2         1.0222      5.81189E-01 1.24861E-04 1.0222      1.2548      216.26      1.8981
   3         1.1162      1.11291E-02 0.0         1.1256      1.2642      222.04      4.0946
   4         1.1922      2.0822      0.0         1.1219      1.2826      216.16      4.1229

使用GNU awk的可能解決方案及其使用FIELDWIDTHS格式FIELDWIDTHS

awk 'BEGIN{FIELDWIDTHS="13 12 12 12 12 12 12 12"; OFS="\t"} 
     {
        for(i=1;i<=NF;i++) 
          $i=($i+0?$i:sprintf("%-" length($i) "s","0.0"))
     }1' file

該腳本循環遍歷所有字段(不僅是第四個字段),以檢查是否為空。 如果是這樣,則將用空格填充的0.0分配給空白字段。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM