을 수정하는 것은 여기 내 스크립트입니다 :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
불행하게도, 그것은 단지 목록의 마지막 파일을 수행합니다. 다른 모든 것들을 건너 뛰고 있습니다. 나는 이것이 버퍼링이나 globbing 또는 무언가와 관련이 있다고 느낀다. 내가 뭘 놓치고 있니?
왜 당신이 당신의 스크립트 라인으로 파일 라인을 읽고 : 여기
는awk
솔루션입니다? Awk는 기본적으로 당신을 위해 그것을한다. $ 1, $ 2, $ 3, $ 4} $ i> $ THE_FILE2'는 아마 당신이 원하는 것입니다. (안된다) – Bernhard