用awk分隔不同大小的空格并向列中添加零

用awk分隔不同大小的空格并向列中添加零,awk,Awk,我在处理由不同大小的空格和不同大小的元素分隔的表时遇到问题。理想情况下,我希望所有字段都用一个选项卡分隔。我还想为任何空白字段元素添加一个零条目。鉴于字段之间有不同大小的空格,不确定awk FS/OFS是否是最合适的方式 如果我使用awk“{print$4}”,我会在第三行之后的条目上得到第4列和第5列的组合。所以我觉得我需要一个正式的分隔符 当前代码(分隔符大小不同的空格): 预期代码(分隔符选项卡,添加零以填充空格): 一种可能的解决方案是使用GNU awk,并使用字段宽度设置其格式: aw

我在处理由不同大小的空格和不同大小的元素分隔的表时遇到问题。理想情况下,我希望所有字段都用一个选项卡分隔。我还想为任何空白字段元素添加一个零条目。鉴于字段之间有不同大小的空格,不确定awk FS/OFS是否是最合适的方式

如果我使用awk“{print$4}”,我会在第三行之后的条目上得到第4列和第5列的组合。所以我觉得我需要一个正式的分隔符

当前代码(分隔符大小不同的空格):

预期代码(分隔符选项卡,添加零以填充空格):


一种可能的解决方案是使用GNU awk,并使用
字段宽度设置其格式:

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
awk'BEGIN{FIELDWIDTHS=“13 12”;OFS=“\t”}
{

对于(i=1;i使用GNU awk及其使用
字段宽度格式化的可能解决方案

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
awk'BEGIN{FIELDWIDTHS=“13 12”;OFS=“\t”}
{

对于(i=1;iIs,总是在第三和第四个字段中添加零(第三和第四个字段的值中是否总是有科学符号?)?因为在任何语言中测量空格都是一个困难的问题,所以请确认一下。如果字段数为8,我会添加一个4字段,而不是9。如果您有GNU awk,我认为您可以使用字段宽度。您说您希望输出一个由制表符分隔的值组成的表,然后接受您得到的第一个答案,该答案不输出表of制表符分隔值,不会如您所示用
0.0
填充空白字段。请修正您的问题,以说明您的实际需求,以便有类似需求的人员在未来寻找解决方案。是否总是在第三和第四个字段中添加零(第三和第四字段的值中是否始终包含科学符号?)?因为在任何语言中测量空格都是一个困难的问题,所以请确认一下。如果字段数为8,我会添加一个4字段,而不是9。如果您有GNU awk,我认为您可以使用字段宽度。您说您希望输出一个由制表符分隔的值组成的表,然后接受您得到的第一个答案,该答案不输出表of制表符分隔值,不会像您显示的那样用
0.0
填充空白字段。请修正您的问题,以说明您的实际需求,以便有类似需求的人员在未来寻找解决方案。
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