1
我在一個文件夾中有一堆CSV文件。他們都在同一個結構上。超過2k列。第一列是ID。改進csv文件的bash腳本
我需要做的每個文件執行以下操作: 對於每個n 奇數柱(除了第一列),執行以下操作:
- 如果
n
值爲0,對於所有的行,然後刪除n
列,並且還n-1
柱 - 如果
n
值是100,對於所有行的,然後刪除該n個列 - 打印除去的列 的索引
我有以下代碼:
for f in *.csv; do
awk 'BEGIN { FS=OFS="," }
NR==1 {
for (i=3; i<=NF; i+=2)
a[i]
}FNR==NR {
for (i=1; i<=NF; i++)
sums[i] += $i;
++r;
next
} {
for (i=1; i<=NF; i++)
if (sums[i] > 0 && sums[i+1]>0 && sums[i] != 100*r)
printf "%s%s", (i>1)?OFS:"", $i;
else print "removed index: " i > "removed.index"
print ""
}' "$f" "$f" > "new_$f"
done
出於某種原因ID列(第一列)的被刪除。
輸入:
23232,0,0,5,0,1,100,3,0,33,100
21232,0,0,5,0,1,100,3,0,33,100
23132,0,0,5,0,1,100,3,0,33,100
23212,0,0,5,0,1,100,3,0,33,100
24232,0,0,5,0,1,100,3,0,33,100
27232,0,0,5,0,1,100,3,0,33,100
電流輸出(壞):
,1,33
,1,33
,1,33
,1,33
,1,33
,1,33
預期輸出:
23232,1,33
21232,1,33
23132,1,33
23212,1,33
24232,1,33
27232,1,33
任何人都可以查看是什麼問題?
回覆晚了非常抱歉。是的,輸出csv文件現在是正確的。但是,索引打印存在問題。根據上例的索引文件,刪除的索引是:8,9,11,但假設爲2,3,4,5,7,8,9,11。 – Omri
現在很好。非常感謝您的幫助。最後一件小事 - 我不希望removed.index的文件名將根據原始文件名命名:'originalFileName.removed.index'。目前該文件一次又一次被覆蓋。我試過使用'$ {f} _removed.index',但它不起作用。 – Omri
確定可以完成。檢查更新的答案。 – anubhava