我有一个文本文件,它可以有 X 个字段,每个字段用逗号分隔。在我的脚本中,我逐行阅读,检查该行上填充了多少字段,并确定我需要在该行末尾附加多少逗号来表示所有字段。例如,一个文件如下所示:
Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5
2326168436,4,1,2,3,4
应该变成这样:
Address,nbItems,item1,item2,item3,item4,item5,item6,item7
2325988023,7,1,2,3,4,5,6,7
2327036284,5,1,2,3,4,5,,
2326168436,4,1,2,3,4,,,
我下面的脚本有效,但它似乎非常低效。是逐行阅读对大文件有困难吗?是 sed 导致减速吗?更好的方法来做到这一点?
#!/bin/bash
lineNum=0
numFields=`head -1 File.txt | egrep -o "," | wc -l`
cat File.txt | while read LINE
do
lineNum=`expr 1 + $lineNum`
num=`echo $LINE | egrep -o "," | wc -l`
needed=$(( numFields - num ))
for (( i=0 ; i < $needed ; i++ ))
do
sed -i "${lineNum}s/$/,/" File.txt
done
done