유사한 유형의 .csv 파일을 하나로 결합하고 새 파일을 만들지 않고 행 수를 계산하는 방법 [닫기]

유사한 유형의 .csv 파일을 하나로 결합하고 새 파일을 만들지 않고 행 수를 계산하는 방법 [닫기]

내 폴더에는 aca1.csv, aca2.csv, aca3.csv, team1.csv, team2.csv 및 team3.csv라는 6개의 .csv 파일이 있습니다. 각 파일에는 80,90,60,70,80 및 90줄이 있습니다. 파일과 해당 유형을 결합하거나 병합할 bash 스크립트 파일이 필요합니다. 예를 들어 aca1,aca2,aca3은 aca 유형입니다. 행 값을 계산합니다(단지 행 수를 계산하고 싶기 때문에 병합된 새 파일을 만들지 않고). 파일의 개수와 유형을 다른 .csv 파일에 씁니다. 아는 사람이 있으면 도와주세요?

답변1

<pattern><number>.<extension>abc1.csv, abc02.csv, abc123.csv라는 파일 에 대해 작동하는 다음 bash 스크립트를 사용해보십시오 . 선택적으로 입력 디렉터리(기본값: .)를 첫 번째 명령줄 인수로 제공하고 파일 확장자(기본값: csv)를 두 번째 인수로 제공할 수 있습니다. 물론 $2를 지정하려면 $1을 강제로 지정해야 합니다.

$ cat ./countlinesbyfilecategory.sh
#!/bin/bash

ptrns=$(for fnm in `find ${1:-.} -regex ".*[0-9][0-9]*\.${2:-csv}"`; do echo $fnm | sed "s/[0-9][0-9]*\.${2:-csv}$//" ; done| sort -u)

for ptrn in $ptrns; do
        echo -n $(basename $ptrn) " "
        find ${1:-.} -regex "${ptrn}[0-9][0-9]*\.${2:-csv}" | xargs wc -l | tail -1 | awk '{print $1}'
done

$

답변2

행 수만 계산하려고 하므로 wc awk및 while을 사용하여 다음을 확인하고 다양한 패턴을 반복할 수 있습니다 .loop

n=0
while read i
do 
((n=n+$i))
done <<(wc -l aca* | awk '{print $1}')
echo $n;

wc -l aca* | awk '{print $1}'패턴에 대한 파일당 줄 수를 알려줍니다. while위의 출력을 읽으면 0 값을 얻고 n총 라인 수를 인쇄하는 마지막 출력을 재귀적으로 추가합니다.wc

유형과 행을 기록하려면 스크립트를 작성하고 측정하려는 패턴을 입력으로 사용할 수 있습니다.echo "$pattern $n" >> output.txt

user@server[/apps/home/user/]>  cat script.sh
#!/bin/bash

for p in "aca*" "*sh"
do
n=0;
while read i;
 do ((n=n+$i));
 done < <(wc -l $p | awk '{print $1}'); echo "$p" $n;
done

user@server[/apps/home/user/]> bash script.sh
aca* 46
*sh 432

답변3

하나 또는 별도의 csv 파일에 모든 유형의 행 개수를 원하는지 여부는 명확하지 않습니다.

두 개의 다른 csv 파일이 필요한 경우 다음을 사용하십시오.

sh-4.3$ for i in aca team
do 
i_ct=`awk -v pat=$i -F ',' 'BEGIN{c=0} FILENAME ~ pat {c += NF}END{print c}' *.csv`
echo "$i,${i_ct}" > ${i}_count.csv 
done 

하나의 파일에 "test"와 "aca"의 종류와 줄 수를 모두 입력해야 하는 경우

sh-4.3$ for i in aca team 
do 
i_ct=`awk -v pat=$i -F ',' 'BEGIN{c=0} FILENAME ~ pat {c += NF}END{print c}' *.csv`
echo "$i,${i_ct}" 
done  > All_ftype_count.csv

파일 형식이 많은 경우 .txt 에서 팀 뒤에 추가할 수 있습니다 for i in. 피드백을 공유해주세요.

관련 정보