2013-10-17 2 views
0

중첩 된 for 루프와 함께 bash 및 awk를 사용하여 서로 옆에있는 열에 데이터를 인쇄하려고합니다. 작동하지 않는하지만 ..bash 및 awk를 사용하여 새 문서의 특정 열에 인쇄하십시오.

for k in {1..147..3} 
do 
for i in "52" "64" "60" "70" "74" 
do 
     awk -v x="${i}" -F, 'match ($0,x) { print $k }' all.csv > final.csv 
done 
done 
echo "script has run" 

내가 새 파일의 열 K에 정보를 인쇄해야합니다 은 지금까지 내가 가진 것입니다. CSV 파일의 데이터 그래서이 같다 : 기본적으로

52,9/05,6109,64,9/05,7382,60,9/06,3829 
52,9/06,6119,64,9/06,7392 
,,,64,9/07,3382 

, 첫 번째 열에서 모든 52S, 네 번째 열에서 64S, 60 :

52,9/05,6109 
52,9/06,6119 
64,9/05,7382 
64,9/06,7392 
64,9/07,3382 
60,9/06,3829 
... 

나는 이런 내 출력을 원하는 일곱 번째 열에

답변

1

print $k 대신 printf "%s,",$k을 사용하십시오.

printf은 많은 언어에서 공통적으로 사용되는 인쇄 포맷터 기능입니다. %s은 첫 번째 인수가 문자열이어야한다고 알려줍니다.

awk은 셸에서 $k을 가져 오지 않으므로 -v k=$k을 추가해야합니다.

+0

이렇게하면 오류가 발생하지만 그 단어들이 의미하는 바를 설명해 주시겠습니까? 나는 그것이 더 잘 이해하는 데 도움이 될 수있는 설명과 함께 생각한다. – user2883071

+0

그것은 당신에게 어떤 오류가 있습니까? – Kevin

+0

awk : (FILENAME = all.csv FNR = 21910) fatal : 형식 문자열을 만족하는 인수가 충분하지 않습니다. '% s ' – user2883071

관련 문제