awk 를 사용해서 한줄 짜리 공백으로 나뉜것 배열에 넣기

catz의 이미지

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를 이용해서 뽑아낸 한줄이고요.
공백을 기준으로 배열 변수에 넣고 싶은데 쉽사리 되지 않습니다.

keizie의 이미지

echo 저문자열 | xargs awk ...
하면 xargs가 공백을 따라 쪼개서 awk에 인자들로 넘겨줍니다.

catz의 이미지

제가 모르는게 많은지라^^;
오래 써왔으면서도ㅜ,.ㅜ
고맙습니다만 ;;

xargs 로도 배열로 안들어갔내요.

다시 보니 설명도 부족했더라구요.^^

공백단위로 끊어서 배열변수로 넣고 싶습니다.

세벌사랑,한글사랑
글이 살아야 나라가 산다.

세벌사랑,한글사랑
글이 살아야 나라가 산다.

keizie의 이미지

man awk를 보면

       split(s, a, fs)
              splits  the  string s into array elements a[1], a[2], ..., a[n],
              and returns n.  The separation is done with the regular  expres-
              sion  fs  or with the field separator FS if fs is not given.  An
              empty string as field separator splits the string into one array
              element per character.

라고 하네요.

split($0, arr) 정도로 하면 arr에 전체행을 쪼갠 배열이 들어갈 겁니다.

여러 줄의 자료를 항상 awk에 한 줄로 넘기려면
... | xargs echo | awk ..
하면 xargs가 모든 인자를 받아서 echo에 한 번에 넘겨줍니다. 그럼 echo가 한 번에 출력하게 되고
awk는 모든 값을 한 줄에 받게 되죠.

catz의 이미지

아 이런 기능도 있었군요!!
얼마남지 않은 주말 잘 보내세요!!

----------
헌데ㅜ.ㅜ
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
"공백"

입니다ㅜ,.ㅜ

세벌사랑,한글사랑
글이 살아야 나라가 산다.

세벌사랑,한글사랑
글이 살아야 나라가 산다.

keizie의 이미지

awk의 split 변수로 만들었으니, awk가 끝난 다음에는 존재하지 않겠죠.

쉘에서 배열을 만드는 법에 대해서는 man bash의 Arrays 절을 참조하세요.

$ arr=(1 2 3)
$ echo ${arr[2]}
3
catz의 이미지

계속된 질문에 ㅜ.ㅜ 친절한 답변 고맙습니다.

분할하고 싶은 데이터는 특정파일의 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 {}

이런식으로도 작성해서 출력값을 쉘의 배열 변수에 넣고 싶었지만ㅡ,.ㅡ;;
당췌 배열로 되질 않내요.

그 값들중 제일 큰걸 찾아야하는데 말이죠 ㅡ,.ㅡ

세벌사랑,한글사랑
글이 살아야 나라가 산다.

세벌사랑,한글사랑
글이 살아야 나라가 산다.

keizie의 이미지

$ cat x
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
$ cat x | tr ' ' '\n' | sort -gr | head -n 1
0.77
catz의 이미지

힘들게 ^^ 삽질하지 않아도 가능하군요!!

헌데ㅜ,.ㅜ 그 값을 기준으로 전후 값 비교를 해야하는 안타까움도 있습니다;;;;
(아 본디 몇번째 값인지도 알아야합니다. 시간 흐름에 따라 배열된 값들이라서요.^^)

제가 너무 설명을 감질맛나게 ㅡ,.ㅡ 써대는 경향이 있는것 같내요. (과제물 내는것도 아니고.. 자꾸 하나씩..;;)

혹시나 하고 tr ' ' '\n' 한걸 변수에 대입했는데 ^^ 역시나 배열로는 안되는군요.

하지만!, 큰거 한걸 풀어낸것에 고맙습니다.!
많이 배웁니다!!

세벌사랑,한글사랑
글이 살아야 나라가 산다.

세벌사랑,한글사랑
글이 살아야 나라가 산다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.