如何使用UNIX上的一些脚本在文件中的文本行中添加丢失的字符



我制作了一个程序,该程序从文件中读取数据并将其插入表中。

每行都有变量,并且每两个变量之间都有一个逗号。每行都是表的不同行。我想制作一个UNIX脚本,该脚本将用100行打开文件,并读取脚本会找到的每行和计数,。之后,我希望它编辑每行并用,填充线,直到计数为50。

例如,我需要每行才有50个逗号(,)。如果我读了一条线并具有30 ,,我想在此行中添加其他20个逗号。

(line1)

9,15040113501460,0,b1          0035569144,91    302317960883,0,15040113501460,132,15040614170560,N,0,0,0,0,0,0,0,0,0,0,8,0,0000000000000000,0,0,2,,27,b1          003st69144,1

(line2)

9,15350114601560,0,b1          0033765345,91    304294596921,0,15040113501560,132,15040610170260,N,0,0,0,0,0,0,0,0,0,0,8,0,0000000000000000,0,0,2,,27,b1          0031r69144,1

这是文件的格式。每行都是这样的。


说明:

该程序期望读取50个变量。因此,它预计49 ,。当文件像上面的文件时,它具有较少的变量时,我将面临错误。因此,我需要UNIX中的脚本来添加缺少的,,以便将它们作为null

您可以使用以下尴尬代码:

awk -F"," 'NF < 50 {printf $0; for(i = NF; i < 50; ++i)  printf ","; printf "n" }' file

产生

9,15040113501460,0,b1          0035569144,91    302317960883,0,15040113501460,132,15040614170560,N,0,0,0,0,0,0,0,0,0,0,8,0,0000000000000000,0,0,2,,27,b1          003st69144,1,,,,,,,,,,,,,,,,,,,,
9,15350114601560,0,b1          0033765345,91    304294596921,0,15040113501560,132,15040610170260,N,0,0,0,0,0,0,0,0,0,0,8,0,0000000000000000,0,0,2,,27,b1          0031r69144,1,,,,,,,,,,,,,,,,,,,,

在这里,NF是每行中的字段数,F是字段分离器。规则SASYS如果您的50个字段(49个逗号),我们将添加这些字段。

我已经使用了相同的方法,但是我注意到它在末尾产生了额外的逗号,所以我对原件进行了调整以在末尾不添加逗号:

awk -F, 'NF <= 50 {printf $0; for(i = NF; i < 50; ++i)  printf ","; printf "n" }'

相关内容

  • 没有找到相关文章

最新更新