這裏是我的腳本:bash腳本,修改一個文件
#!/bin/bash
for i in *.csv
do
echo "i: $i"
THE_FILE2="$i-2.csv"
file_read()
{
lineno=0
while read line
do
echo $line | awk -F, '{print $1","$2",,,"$3","$4}'
((lineno++))
done
} < $i > $THE_FILE2
echo "the_file2: $THE_FILE2"
echo "end"
done
file_read
輸出:
i: 2992.csv
the_file2: 2992.csv-2.csv
end
i: 5415.csv
the_file2: 5415.csv-2.csv
end
i: csa.csv
the_file2: csa.csv-2.csv
end
i: loc.csv
the_file2: loc.csv-2.csv
end
i: visa.csv
the_file2: visa.csv-2.csv
end
$ ls
2992.csv csa.csv transform.sh visa.csv-2.csv
5415.csv loc.csv visa.csv
不幸的是,它只做它在列表的最後一個文件。它跳過所有其他人。我有一種感覺,這與緩衝或通配或某事有關。我錯過了什麼?
你爲什麼要讀一行文件行腳本? Awk默認爲你做。 'awk -F''{print $ 1','$ 2',,,'$ 3','$ 4}'$ i> $ THE_FILE2'可以做你想要的(未經測試) – Bernhard