我有一个文本文件,可以有X个字段,每个字段用逗号分隔。在我的脚本中,我逐行阅读,检查该行上已填充了多少个字段,并确定需要将多少个逗号附加到该行的末尾来表示所有字段。例如,一个文件是这样的:bash:逐行读取文件并sed追加
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
+1 Nice! ..... – Kent 2013-03-01 16:12:19
哇,非常感谢。它不仅完美达到我的目标,而且简单而快速! – ssbsts 2013-03-01 23:42:26
+1一如既往的Scrutinizer优雅的解决方案, - Akshay – 2014-02-20 18:02:43