cat linux를 사용하여 여러 .csv 파일에 헤더 포함

cat linux를 사용하여 여러 .csv 파일에 헤더 포함

이름을 다음으로 전환하여 여러 .csv 파일에 .csv 헤더를 동시에 포함해야 합니다.

원래 이름 1c.csv, 원래 이름 2c.csv, 원래 이름 3c.csv

현재 프로세스는 다음과 같습니다.

cat header.csv originalname1.csv > originalname1c.csv
cat header.csv originalname2.csv > originalname2c.csv
cat header.csv originalname3.csv > originalname3c.csv

등.

위의 예처럼 단일 명령으로 여러 파일에 헤더를 추가할 수 있나요?

보너스 1: 파일 이름이 무작위이면 어떻게 되나요? 규칙 유지: anyname.csv에서 anynamec.csv까지

답변1

for name in anyname*.csv; do
    cat header.csv "$name" >"${name%.csv}c.csv"
done

다음은 anyname*.csv.csv 파일의 내용을 추가하려는 CSV 파일의 이름과 일치하는 디렉터리 경로를 포함할 수 있는 몇 가지 셸 패턴입니다 header.csv. 이상적으로 이 패턴은 이름과 일치하지 않아야 합니다 header.csv. 그렇다면 다른 곳으로 이동하거나, 이름을 바꾸거나, 건너뛰도록 명시적인 테스트를 삽입하는 것을 고려해 보세요.

for name in anyname*.csv; do
    [ "${name##*/}" = header.csv ] && continue
    cat header.csv "$name" >"${name%.csv}c.csv"
done

또는 bash또는 zsh셸 에서

for name in anyname*.csv; do
    [ "$name" -ef header.csv ] && continue
    cat header.csv "$name" >"${name%.csv}c.csv"
done

(또는 그냥 무시하고 headerc.csv생성될 수 있는 파일을 삭제하세요.)

루프는 일치하는 이름을 반복하고 헤더를 CSV 레코드와 연결하여 원본과 이름은 동일하지만 파일 이름 .csv접미사가 c.csv.

표준 확장자 ${var%pattern}는 으로 확장되지만 $var일치하는 가장 짧은 접미사 문자열은 제거됩니다 pattern. 확장 ${var##pattern}도 표준이며 일치하는 가장 긴 접두사 문자열을 제거합니다 $var. 위의 예에서는 이를 삭제하는 데 사용합니다 $name.

답변2

for i in 1 2 3; do cat header.csv originalname${i}.csv > originalname${i}c.csv; done

또는

for i in name1 mynameH arglebargle; do cat header.csv ${i}.csv > ${i}c.csv; done

또한 번호가 매겨진 여러 파일의 경우:

for i in $(seq 1000); do cat header.csv file${i} > file${i}c.csv; done

$(seq 1000)또한 될 수 있습니다{1..1000}

이것이 당신을 만든다

cat header.csv file1 > file1c.csv
cat header.csv file2 > file2c.csv
cat header.csv file3 > file3c.csv
.
.
.
cat header.csv file998 > file998c.csv
cat header.csv file999 > file999c.csv
cat header.csv file1000 > file1000c.csv

이를 수행하는 일반적인 방법은 다음 줄을 사용하는 것입니다.

for i in *.csv; do if [ "$i" != header.csv ]; then cat header.csv "$i" > $(basename "$i" .csv)c.csv; fi; done

"basename" 명령은 주어진 경로를 분석하고 파일 이름만 반환하며, 접미사를 지정한 경우(여기서 .csv를 사용한 것처럼) 해당 부분도 제거합니다. 그런 다음 "c"를 추가하고 .csv를 다시 넣으면 이것이 새 파일 이름이 됩니다.

"if" 조건은 헤더 파일을 건너뜁니다. 그렇지 않으면 헤더 파일도 중단됩니다.

관련 정보