여러 파일 조작 및 저장

여러 파일 조작 및 저장

약 2,000개의 파일이 있고 26개 열 중 12개 열을 추출하고 추출된 정보를 새 파일에 저장하려고 합니다. 나는 단일 파일을 사용하여 이 작업을 수행해 왔습니다.

cat "oldfile.csv" | grep -v "=" | cut -f 1-4,9,14,15,19,21,22,24,26 > newfile.csv

일련의 Unix 명령을 사용하여 모든 파일을 처리하는 방법이 있어야 합니다.

어떤 도움이라도 대단히 감사하겠습니다.

답변1

쉘은 루프를 실행할 수 있습니다:

for i in *.csv; do 
    grep -v "=" "$i" | cut -f 1-4,9,14,15,19,21,22,24,26 > "new.$i"
done

그러나 필드에 필드 구분 기호가 포함되어 있으면 이 작업이 실패합니다. 그러나 루프 때문이 아닙니다.

답변2

특정 파일을 스크립트에 대한 인수로 제공하려는 경우(예:process_csv.sh

#!/bin/bash
for arg; do
    grep -v "=" "${arg}" | cut -f 1-4,9,14,15,19,21,22,24,26 > "${arg}.new"
done

이제 다음과 같이 이 스크립트를 실행할 수 있습니다.

./process_csv.sh *.csv또는

./process_csv.sh first.csv fifth.csv seventh.csv또는

./process_csv.sh somefile1 somefile2

누가 지적하기 전에 위 스크립트에서 매개변수를 유지하고 싶지 않다면 shift스크립트에서 사용할 수 있습니다.

관련 정보