awk 를 사용해서 한줄 짜리 공백으로 나뉜것 배열에 넣기
0 0 0 0.02 0 0 0 0 0 0 0 0 0 0 0 0.01 0 0 0 0 0.01 0 0 0 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0 0 0 0 0 0.01 0 0 0 0.01 0.01 0.02 0 0 0.01 0 0 0 0 0 0 0.01 0.06 0.04 0.02 0 0 0 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0.77 0.27 0.12 0.06 0.08 0.05 0.01 0\
0 0.03 0.03 0 0.02 0 0 0 0 0 0.17 0.11 0.09 0.06 0.04 0.01 0 0.01 0 0 0 0 0.01 0 0.01 0.01 0 0.03 0.01 0 0 0 0 0 0 0 0 0.01 0 0 0.01 0 0 0 0 0 0.22 0.15 0.11 0.07 0.06 0.05 0.03 0.01 0 0 0 0.01 0 0 0 0.01 0 0 0 0 0 0 0 0 0 0 0.01 0 0\
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01 0 0 0 0 0.01 0.04 0.04 0.02 0 0 0 0.01 0 0 0 0 0.01 0 0 0.02 0 0 0 0 0.01 0.01 0 0.01 0 0 0 0 0 0 0 0 0.01 0 0 0 0 0 0 0 0 0 0 0 0.01 0.01 0 0 0.01 0 0 0 0 0 0 0 0 0 0 0.01 0.01 0 0 0.02 0.01 0 \
0.01 0 0 0 0 0 0 0 0 0.01 0 0.01 0 0 0 0.02 0.01 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.01 0 0 0
이런 한줄짜리 데이터를 여러줄로 (배열변수)에 넣고 싶은데
어떻게 하면 될까요? 쉘 스크립트에 넣고 쓰는데
저 데이터는 awk를 이용해서 뽑아낸 한줄이고요.
공백을 기준으로 배열 변수에 넣고 싶은데 쉽사리 되지 않습니다.
xargs는 어떤가요?
echo 저문자열 | xargs awk ...
하면 xargs가 공백을 따라 쪼개서 awk에 인자들로 넘겨줍니다.
앗 고맙습니다.
제가 모르는게 많은지라^^;
오래 써왔으면서도ㅜ,.ㅜ
고맙습니다만 ;;
xargs 로도 배열로 안들어갔내요.
다시 보니 설명도 부족했더라구요.^^
공백단위로 끊어서 배열변수로 넣고 싶습니다.
세벌사랑,한글사랑
글이 살아야 나라가 산다.
세벌사랑,한글사랑
글이 살아야 나라가 산다.
split 함수가 있습니다.
man awk를 보면
라고 하네요.
split($0, arr) 정도로 하면 arr에 전체행을 쪼갠 배열이 들어갈 겁니다.
여러 줄의 자료를 항상 awk에 한 줄로 넘기려면
... | xargs echo | awk ..
하면 xargs가 모든 인자를 받아서 echo에 한 번에 넘겨줍니다. 그럼 echo가 한 번에 출력하게 되고
awk는 모든 값을 한 줄에 받게 되죠.
거듭 감사합니다.^^
아 이런 기능도 있었군요!!
얼마남지 않은 주말 잘 보내세요!!
----------
헌데ㅜ.ㅜ
set AVERAGE = `echo 11 22 33 44 55 66 77 88 99 00 | xargs echo | awk 'split($0,AVERAGE)'`
echo $AVERAGE
echo $AVERAGE[0]
결과는
11 22 33 44 55 66 77 88 99 00
"공백"
입니다ㅜ,.ㅜ
세벌사랑,한글사랑
글이 살아야 나라가 산다.
세벌사랑,한글사랑
글이 살아야 나라가 산다.
awk 안에서 유지되는 배열입니다.
awk의 split 변수로 만들었으니, awk가 끝난 다음에는 존재하지 않겠죠.
쉘에서 배열을 만드는 법에 대해서는 man bash의 Arrays 절을 참조하세요.
매번 답변 주셔서 고맙습니다.^^
계속된 질문에 ㅜ.ㅜ 친절한 답변 고맙습니다.
분할하고 싶은 데이터는 특정파일의 61번째 줄을 AWK 를 사용해서 뽑아낸 데이터입니다 .
쉘에 배열로 넣고 싶은데^^
awk 에서 뽑아낸 데이터는 배열로 들어가질 않내요.
awk는
BEGIN{}
{
if (NR == 61) {
wordCount += NF;
print NF;
split($0,AVERAGE);
i=1;
while (AVERAGE[i] is NOT NULL ) {
print AVERAGE[i];
i++;
}
}
}
END {}
이런식으로도 작성해서 출력값을 쉘의 배열 변수에 넣고 싶었지만ㅡ,.ㅡ;;
당췌 배열로 되질 않내요.
그 값들중 제일 큰걸 찾아야하는데 말이죠 ㅡ,.ㅡ
세벌사랑,한글사랑
글이 살아야 나라가 산다.
세벌사랑,한글사랑
글이 살아야 나라가 산다.
awk 안 써도 됩니다.
헉;
힘들게 ^^ 삽질하지 않아도 가능하군요!!
헌데ㅜ,.ㅜ 그 값을 기준으로 전후 값 비교를 해야하는 안타까움도 있습니다;;;;
(아 본디 몇번째 값인지도 알아야합니다. 시간 흐름에 따라 배열된 값들이라서요.^^)
제가 너무 설명을 감질맛나게 ㅡ,.ㅡ 써대는 경향이 있는것 같내요. (과제물 내는것도 아니고.. 자꾸 하나씩..;;)
혹시나 하고 tr ' ' '\n' 한걸 변수에 대입했는데 ^^ 역시나 배열로는 안되는군요.
하지만!, 큰거 한걸 풀어낸것에 고맙습니다.!
많이 배웁니다!!
세벌사랑,한글사랑
글이 살아야 나라가 산다.
세벌사랑,한글사랑
글이 살아야 나라가 산다.
댓글 달기