리눅스 awk 로 레코드 끼리 계산하는것좀 알려주세요 ㅠ

riodiv의 이미지

HETATM 1277 O HOH A 201 35.636 -2.996 15.255 0.36 12.26 O
HETATM 1278 O HOH A 202 32.694 19.805 17.167 0.84 19.38 O
HETATM 1279 O HOH A 203 26.221 14.314 13.400 0.89 28.18 O
HETATM 1280 O HOH A 204 22.566 7.494 2.350 0.87 36.92 O
HETATM 1281 O HOH A 205 30.932 6.438 -8.815 1.00 41.84 O

AWK 는 필드끼리는 계산하기가 쉬운데 레코드끼리 계산하는거는 힘든것 같아서요

여기보시면 5번째열 (201,202,203,204,205) 가 보이잖아요?

201 x 202
201 x 203
201 x 204
201 x 205
202 x 203
202 x 204
202 x 205
203 x 204
203 x 205
204 x 205

이렇게 어떻게 하나요? ㅠㅠ

세벌의 이미지

질문 뜻을 잘 모르겠습니다.
하려는 작업이 뭔지도...
꼭 awk 를 써야만 하는지도...

익명 사용자의 이미지

다섯번째가 아니라 여섯번째 필드같군요.

cat datafile.txt | awk '{
	data[NR] = $6
} END {
	for(i = 1; i <= NR; ++i) {
		for(j = i + 1; j <= NR; ++j) {
			printf("%d x %d = %d\n", data[i], data[j], data[i] * data[j])
		}
	}
}'
익명 사용자의 이미지

위 코드를 터미널에 그냥 복사-붙이기하면 들여쓰기 탭문자 때문에 잘 작동이 안될수도 있습니다. 들여쓰기를 모두 스페이스 몇개로 바꾸고 사용하세요. 아니면 스크립트 파일로 만들어서 사용하셔도 됩니다.

riodiv의 이미지

좋은 하루 되세요

qq의 이미지

간단하면서도 명확하네요.
QnA 게시판을 빛내주는 좋은 답변 감사합니다. 덕분에 저도 하나 배우고 갑니다.

익명 사용자의 이미지

옛날에는 이런 질문 올라오면 펄 버젼, 루비 버젼, 파이썬 버젼, 배쉬 버젼, 루아 버젼 ... 등등이 십수개씩 달리고 그랬었는데 말이지요. 흐음. scala 버젼 한 번 올려봅니다.

cat datafile.txt | scala -e 'io.Source.stdin.getLines()
    .map(_.split(" ")(5).toInt)
    .toVector
    .combinations(2)
    .foreach(c => println(
        s"${c(0)} * ${c(1)} = ${c(0) * c(1)}")
    )'
익명 사용자의 이미지

들여쓰기가 이상해서 다시

cat datafile.txt | scala -e '
    io.Source.stdin.getLines()
    .map(_.split(" ")(5).toInt)
    .toVector
    .combinations(2)
    .foreach(c => println(s"${c(0)} * ${c(1)} = ${c(0) * c(1)}"))
'
익명 사용자의 이미지

호응이 없군요. Perl 6 버젼입니다. scala 버젼과 상당히 유사합니다. 아직 perl 6 에 익숙하지 않은터라 idiomatic한 코드는 아닐 수 있습니다.

cat datafile.txt | perl6 -e '
    lines().map({.split(" ")[5]})
    .combinations(2)
    .map({say("$_[0] x $_[1] = {$_[0] * $_[1]}")})
'

댓글 달기

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 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.