我有一個文本文件,可以有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