2014-04-16 1 views
1

awk를 사용하여 많은 데이터 열을 INPUT 디렉토리에서 OUTPUT까지 개별 단일 데이터 열로 줄이려고합니다. 그러나 아래에 첨부 된 코드를 사용하여, 나는 다음과 같은 오류가 발생합니다 :bash로 다른 디렉토리로 파이프 할 수 없습니까?

#!/bin/bash 
FILES=/INPUT/* 
OUTPUT=/OUTPUT 
for f in $FILES 
do 
    awk '{ print $3 }' $f > $OUTPUT/$f_1c 
done 

감사합니다 "출력/디렉토리입니다!" 당신이 의견에 말했듯이

awk '{ print $3 }' $f > $OUTPUT/${f}_1c 
           ^^^^ 

: 당신은 괄호 안에 $f을 표시하지가 변수 f_1c으로 간주 가져야 만 당신이 할 수

답변

4

,

However this adds the entire path to the filename in ${f}_1c, and bash gives an error

우리 파일 이름 만 가져야합니다. 이 basename으로 수행 할 수 있습니다

file_name=$(basename "$f") 
awk '{ print $3 }' $f > $OUTPUT/${file_name}_1c 

을 모두 함께 :

#!/bin/bash 
FILES=/INPUT/* 
OUTPUT=/OUTPUT 
for f in $FILES 
do 
    file_name=$(basename "$f") 
    awk '{ print $3 }' $f > $OUTPUT/${file_name}_1c 
done 
+1

뭔가 뭔가 견적 팀에게 내가 볼 – kojiro

+0

을. 그러나 이것은 $ {f} _1c의 파일 이름에 전체 경로를 추가하고 bash는 오류를냅니다 : -bash : /OUTPUT//INPUT/mubunching-100302.0250.001_1c : 그런 파일이나 디렉토리가 없습니다. – StarStrides

+1

@StarStrides file_name = $ (basename "$ f")'그리고 나서'awk '{print $ 3}'$ f> $ OUTPUT/$ {file_name} _1c' – fedorqui

관련 문제