2013-05-24 4 views
1

떠들썩한 파일의 출력을 저장하고, 나는 각 폴더내가 폴더에 어떤 파일이

transaction1.csv 
transaction2.csv 
transaction3.csv 
transaction4.csv 

의 첫 번째 줄 필요하고 난 다음 코드를

#All folders that begin with the word transaction 

folder='"transaction*"' 

ls `echo $folder |sed s/"\""/\/g` >testFiles 

# The number of lines of testFiles that is the number of transaction files 

num=`cat testFiles | wc -l` 

for i in `seq 1 $num` 
do 
    #The first transaction file 
    b=`cat testFiles | head -1` 

    #The first line of the first transaction file 
    cat `echo $b` | sed -n 1p 

    #remove the first line of the testFiles 
    sed -i '1d' testFiles 
done 

이 코드가 작동을 문제는 내가 파일에 각 파일의 첫 줄을 저장할 필요가있다이다

그리고 난 라인 변경하는 경우 :

cat `echo $b` | sed -n 1p > salida 

이없는 작품 = (

+0

스크립트 최상단에'exec> salida'를 넣으면됩니다. –

답변

1

당신이 원하는 한 줄이해야 할이 AWK : 각 csv의 첫 번째 줄은 파일로 저장됩니다

awk 'FNR==1{print > "output"}' *.csv 

: 배쉬에서 output

+0

그리고 bzip2로 모든 파일을 압축 한 경우 모든 파일의 형식은 .csv.bz2이고 awk가 작동하지 않으면 명령이 파일을 인쇄 할 수 없기 때문에 –

+0

ok, bz2 부분은 언급하지 않았습니다. 당신은 그 요구 사항을 알고 있습니까? 파일이 암호화 된 경우 아무 대답도 여기에서 작동하지 않습니다. 그래서 패키지를 추출한 다음 여기에서 답을 시도하십시오. – Kent

3

:

for file in *.csv; do head -1 "$file" >> salida; done 

아담이 코멘트에서 언급했듯이 이것은 openin g 루프를 통해 매번 파일.

for file in *.csv; do head -1 "$file" ; done > salida 
+3

또는'>> salida; done'을 사용하면'; 완료> 살리다. 이렇게하면 루프를 통해 매번 파일을 다시 열지 않고 추가하는 대신 파일을 교체합니다 (예 : 이전 시도의 파일이 더러운 경우). –

+0

좋은 점 @ AdamH.Peterson. 나는 그것을 그 대답에 추가 할 것이다. –

+0

참고 :'head -1'은 더 이상 사용되지 않으며'head -n 1'을 사용하십시오. –

0

sed를 사용 : 당신은 더 나은 성능과 안정성을 사용 다음 필요한 경우

for f in *.csv; do sed -n "1p" "$f"; done >salida 
2
head -qn1 *.csv 

head -n1 각 파일의 첫 번째 행을 인쇄하며, -q는 헤더가 표시되지 않습니다 때보다 더 하나의 파일이 명령 행에 주어집니다.

=== 편집 ===

파일이 (그들이 당신의 의견에 mentinoned로 "의 bzip2"으로 압축하는 경우, 예를 들어) 및 일부 사소 할 필요가 없습니다 원시 텍스트 경우 각 파일에 대한 전처리 작업을 수행 할 때는 루프 for을 사용하는 것이 가장 좋습니다. 예를 들어 있지만, 물론이 뜻은 아마도 바람직하지 않다 어떤을 압축 해제하여 장소에 파일을 변경

for f in *.csv.bz2 ; do 
    bzcat "$f" | head -n1 
done > salida 

는 (또 다른 옵션은 bunzip2 *.csv.bz2 && head -qn1 *.csv > salida으로, 두 단계를 bunzip2 파일에있을 다음 head 것 .)

+0

그리고 bzip2로 모든 파일을 압축하면 모든 파일의 형식은 .csv.bz2이고 bz2로 머리를하면 작동하지 않습니다. –

관련 문제