[완료] 파이프 2개를 사용하는 방법은 없을까요?
글쓴이: sayhappy / 작성시간: 월, 2007/03/19 - 9:35오후
-------------------------------
$cat a.dat
a 1
b 2
c 3
$cat b.dat
e 4
f 5
g 6
-------------------------------
두 파일의 특정 열에 있는 숫자의 합을 구하려고 합니다.
위에 있는 a.dat와 b.dat의 두번째 열에 있는 데이터의 각각의 행에 대한 합을 구하려고 합니다.
$cat a.dat | cut -f2
1
2
3
$cat b.dat | cut -f2
4
5
6
하면 두 열의 숫자들을 얻어올 수 있는데,
이걸 awk를 이용해서 더 할 수 있는 방법이 없네요. 어떻게 깔끔하게 할 수 있는 방법 없을까요?
이런 경우엔 어쩔 수 없이 첫번째 결과를 임시적으로 파일에 쓰고 다시 읽어서 더하는 식으로 해야 하나요?
$cat a.dat | cut -f2 > tmp
$cat b.dat | cut -f2 | paste - tmp
$awk'{print $1+$2}' tmp
질문을 고쳤습니다. ^^;
Forums:
질문이 선듯 이해가 잘안되는군요.
질문을 잘 이해했는지 모르겠군요..
cat a.dat|cut -f2
cat b.dat|cut -f2
결과에 대해서 뭔가 하는거 같네요..
아래와 같은 명령을 쓸수도 있습니다.
(cat a.dat;cat b.dat)| awk '{ S2+=$2; S4+=$4 } END { print "S2", S2, "S4",S4 }'
이런것도 있습니다.
특정 row만 가져와서.. 더하는
(awk 'NR==2 {print $0}' a.dat;awk 'NR==2 { print $0}' b.dat ) |
awk '{ S2+=$2; S4+=$4 } END { print "S2", S2, "S4",S4 } '
아니면 getline을 써도 될 것 같네요.
요렇게 하면 되네요.
요렇게 하면 되네요.
(cat a.dat;cat b.dat)| awk '{S2+=$2} END {print S2}'
질문의 명령을 보니..
$cat a.dat | cut -f2 > tmp
$cat b.dat | cut -f2 | paste - tmp
$awk'{print $1+$2}' tmp
각 파일 같은 line의 두번째 필드를 더하는거 같은데..
요렇게 한번 해보세요..
paste a.dat b.dat | awk '{ print $2+$4 } '
워낙 다양한 방법이 있어놔서..
어이쿠..
수정: 어이쿠 질문을 잘못 이해했습니다.
댓글 달기