awk paste 두번째줄부터 더하는 스크립트좀 짜주세요

wop22의 이미지

paste a.log b.log | awk '{print $1, $2+$2, $3+$3, $4+$4, $5+$5}' > c.log

a.log의 첫번째줄은 가만히 두고

2번째줄부터 a.log와 b.log의 합을 구할라고 하는데 잘 모르겠네요..

여러개의 파일도 더할수있나요??

esrevinu의 이미지

지난 번에 비슷한 질문 올리셨는데 paste란 명령어를 쓰시기로 하셨나 보네요.
paste 명령어는 저는 처음 봅니다. ㅎㅎ
awk 스크립트가 좀 이상한데 의도하신 건가요? 저러면 다른 파일 내용이 아니라 같은 파일 내용을
더하는 건데...
어쨌든 질문하신 것만 해결해 보려고 했는데 Bash에서는 다음과 같이 하면 되네요.

head -n 1 a.log > c.log
#paste <(tail -n +2 a.log) b.log | awk '{d=NF/2; for (i=1; i <=d; i++) printf "%d ", $i+$(i+d); printf "\n"}' >> c.log
tail -n +2 a.log | paste - b.log | awk '{d=NF/2; for (i=1; i <=d; i++) printf "%d ", $i+$(i+d); printf "\n"}' >> c.log

여러 개 파일을 더하려면 복잡하므로 두 개씩만 더하는 걸로 하고 중첩시켜 나가면 될 것 같네요.
a.log b.log c.log d.log ... 를 더해 나간다면 시작이 되는 파일을 result.log로 복사하고 나머지를 계속 result.log
에 더해 가는 거죠.
filelist=( a.log b.log c.log d.log )
cp "${filelist[0]}" result.log
for file in "${filelist[@]:1}"; do
  head -n 1 result.log > temp.log
  #paste <(tail -n +2 result.log) "$file" | awk '{d=NF/2; for (i=1; i <=d; i++) printf "%d ", $i+$(i+d); printf "\n"}' >> temp.log
  tail -n +2 result.log | paste - "$file" | awk '{d=NF/2; for (i=1; i <=d; i++) printf "%d ", $i+$(i+d); printf "\n"}' >> temp.log
  mv temp.log result.log
done

>> 가 >& gt;로 보이네요.

익명 사용자의 이미지

제가 스크립트언어를 잘모르다보니 막 해서 비슷하게 나오길래 질문에 있는것 처럼 했습니다. ㅎㅎ

짜주신 소스로 공부도 하고 수정해나가면서 하면 될거 같습니다.

감사합니다

익명 사용자의 이미지

"${filelist[@]:1} 검색해보니 매개변수 확장이라고 나오는데 ((a.log + b.log)+c.log)+d.log... 이런식으로 되는건가 해서요..

:1 이부분 숫자를 살짝변경하니 값이 이상하게 나오네요ㅜㅜ

esrevinu의 이미지

배열 슬라이스입니다. 인덱스 1부터 끝까지의 배열을 나타냅니다. 즉 인덱스가 0인 첫번째 배열 원소가 빠진 겁니다. 왜 뺐냐하면 a.log는 이미 앞에서 result.log로 복사했기 때문입니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.