라인단위로 문자열의 개수구하는 방법은 찾기가 쉬웠는데

1 라인에서 중복되는 문자열 개수 구하는 방법은 의외로 찾기가 어려웠습니다.


예를들어 1라인에 아래의 문자열이 있을 때, '/' 슬래쉬의 개수를 구하고 싶은 경우

파일명은 input이라고 하면

/TEST1/TEST2/TEST3/TEST4/TEST5/TEST6/TEST7/TEST8/TEST9/TEST10/TEST11/TEST12/TEST13/TEST14/TEST15/TEST16/TEST17/TEST18/TEST19/TEST20/TEST21/TEST22/TEST23/TEST24/TEST25/TEST26/TEST27/TEST28/TEST29/TEST30/TEST31/TEST32/TEST33/TEST34/TEST35/TEST36/TEST37/TEST38/TEST39/TEST40/TEST41/TEST42/TEST43/TEST44/TEST45/TEST46/TEST47/TEST48/TEST49/TEST50/TEST51/TEST52/TEST53/TEST54/TEST55/TEST56/TEST57/TEST58/TEST59/TEST60/TEST61/TEST62/TEST63/TEST64/TEST65/TEST66/TEST67/TEST68/TEST69/TEST70/TEST71/TEST72/TEST73/TEST74/TEST75/TEST76/TEST77/TEST78/TEST79/TEST80/TEST81/TEST82/TEST83/TEST84/TEST85/TEST86/TEST87/TEST88/TEST89/TEST90/TEST91/TEST92/TEST93/TEST94/TEST95/TEST96/TEST97


awk 와 gsub으로 슬래쉬 '/' 개수 구하는 명령

% awk '{print gsub(/\//,"")}' input

97

반응형

출처

http://www.thegeekstuff.com/2010/01/awk-introduction-tutorial-7-awk-print-examples/

http://cs.canisius.edu/ONLINESTUFF/PL_TUTORIALS/AWK/awk.examples


awk 명령 옵션 모음





# 파일 전체 출력
$ awk '{print;}' example1
100  Thomas  Manager    Sales       $5,000
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000

# 특정 패턴 매칭 출력
$ awk '/Thomas/             # 엔터키로 패턴 추가
> /Nisha/' example1
100  Thomas  Manager    Sales       $5,000
400  Nisha   Manager    Marketing   $9,500

특정 열만 출력
$ awk '{print $2, $5}' ./example1
$ awk '{print $2, $NF}' ./example1   # NF는 마지막 필드를 뜻함
Thomas $5,000
Jason $5,500
Sanjay $7,000
Nisha $9,500
Randy $6,000


특정 범위만 출력
$ awk '$1 > 300' example1    # 1열이 300보다 크면 출력
400  Nisha   Manager    Marketing   $9,500
500  Randy   DBA        Technology  $6,000


지정된 열에 지정된 스트링과 일치하는 라인만 출력
$ awk '$4 ~/Technology/' ./example1       # 4열에 Technology가 있으면 출력
200  Jason   Developer  Technology  $5,500
300  Sanjay  Sysadmin   Technology  $7,000
500  Randy   DBA        Technology  $6,000   


지정된 라인에 지정된 스트링과 매칭하는 라인의 개수 출력
# 4열에 Technology 매칭되면 count를 증가 시켜서 그 개수를 출력해줌
$ awk 'BEGIN { count=0;}         # 엔터
> $4 ~ /Technology/ { count++; }   # 엔터
> END { print "Number of employees in Technology Dept =",count;}' example1    
Number of employees in Technology Dept = 3       


라인별 length 비교하여 출력
$ awk 'length == 7 {print $0}' last_name   # 라인의 length가 7이면 출력
진 陈
번 樊
보 寶
순 順
...


반응형

+ Recent posts