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의 합을 구할라고 하는데 잘 모르겠네요..
여러개의 파일도 더할수있나요??
지난 번에 비슷한 질문 올리셨는데 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
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 이부분 숫자를 살짝변경하니 값이 이상하게 나오네요ㅜㅜ
배열 슬라이스입니다. 인덱스 1부터 끝까지의 배열을 나타냅니다. 즉 인덱스가 0인 첫번째 배열 원소가 빠진 겁니다. 왜 뺐냐하면 a.log는 이미 앞에서 result.log로 복사했기 때문입니다.
텍스트 포맷에 대한 자세한 정보
<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]
지난 번에 비슷한 질문 올리셨는데 paste란
지난 번에 비슷한 질문 올리셨는데 paste란 명령어를 쓰시기로 하셨나 보네요.
paste 명령어는 저는 처음 봅니다. ㅎㅎ
awk 스크립트가 좀 이상한데 의도하신 건가요? 저러면 다른 파일 내용이 아니라 같은 파일 내용을
더하는 건데...
어쨌든 질문하신 것만 해결해 보려고 했는데 Bash에서는 다음과 같이 하면 되네요.
여러 개 파일을 더하려면 복잡하므로 두 개씩만 더하는 걸로 하고 중첩시켜 나가면 될 것 같네요.
a.log b.log c.log d.log ... 를 더해 나간다면 시작이 되는 파일을 result.log로 복사하고 나머지를 계속 result.log
에 더해 가는 거죠.
>> 가 >& gt;로 보이네요.
감사합니다 덕분에 많이 도움됬습니다
제가 스크립트언어를 잘모르다보니 막 해서 비슷하게 나오길래 질문에 있는것 처럼 했습니다. ㅎㅎ
짜주신 소스로 공부도 하고 수정해나가면서 하면 될거 같습니다.
감사합니다
저기 혹시 for file in "${filelist[@]:1}"; do 이부분에 대해서 설명좀 해주실수 있나요??
"${filelist[@]:1} 검색해보니 매개변수 확장이라고 나오는데 ((a.log + b.log)+c.log)+d.log... 이런식으로 되는건가 해서요..
:1 이부분 숫자를 살짝변경하니 값이 이상하게 나오네요ㅜㅜ
배열 슬라이스입니다. 인덱스 1부터 끝까지의 배열을
배열 슬라이스입니다. 인덱스 1부터 끝까지의 배열을 나타냅니다. 즉 인덱스가 0인 첫번째 배열 원소가 빠진 겁니다. 왜 뺐냐하면 a.log는 이미 앞에서 result.log로 복사했기 때문입니다.
댓글 달기