awk 명령을 통한 패턴 검색, 텍스트 처리 ②
개시하다
태엽을 잘 감기 위해서, 나는 리눅스 씨와 사이가 매우 좋다. 리눅스 씨는 검색뿐만 아니라, 많은 텍스트 편집 처리를 한다.
이번에는 텍스트 편집을 편리하게 하기 위해서, 나는 비 상호작용 편집기의awk 명령을 배우고 싶다.
sed 지령보다 더 강한 녀석.
awk 명령으로 모드 검색, 텍스트 처리를 하는 ①의 계속!
개요
awk 명령에서
■동작의 생략
■ 점수 편집해보기
정리했어요!
■동작의 생략
awk 명령 형식
$ awk 'パターン{アクション}' ファイル
그럼 동작을 생략하면 어떻게 될까요?해봤어요.
$ ls -l /usr/bin | awk '$9 ~/^cp/'
-rwxr-xr-x 1 root root 146880 Jan 23 2020 cp
-rwxr-xr-x 1 root root 141824 Oct 15 20:53 cpio
-rwxr-xr-x 1 root root 67920 Dec 16 22:47 cpupower
동작을 지정하지 않으면 레코드가 그대로 유지됩니다!...그래(@@)
동작을 생략하다
{print $0}
지정하다.
0달러라는 것은 모든 행동을 가리키는 것 같다.참고로 동작에서 파라미터를 생략하면 자동으로 $0을 지정합니다.
모두 함께
awk '$9 ~ /^cp/'
awk '$9 ~ /^cp/{print}'
awk '$9 ~ /^cp/{print $0}'
■ 점수 편집해보기
쉼표로 구분된 csv 파일을 편집합니다.
게임 결과의 스코어.csv 파일
1,suidou,100
2,denki,48
3,gasu,22
4,gesui,78
잠깐만(><) 그 까다로운 구분자!어떻게 구분자를 식별합니까?awk 명령으로 패턴 검색, 텍스트 처리를 하는 ①을 완성할 수 없습니다...
awk 명령을 사용하여 구분자를 지정하려면 -F 옵션을 사용하여 구분자를 지정합니다.
$ awk -F , '{print}' score.csv
1 suidou 100
2 denki 48
3 gasu 22
4 gesui 78
- F 옵션!분수만 내보내기
$ awk -F , '{print $NF}' score.csv
100
48
22
78
OK('◇')!awk 명령의sum 동작에서 점수의 합계점을 계산하고 마지막으로 합계점을 계산합니다
$ awk -F , '{sum = sum + $NF} END{print sum}' score.csv
248
합계 표시하기{sum=sum+행 지정}
구문을 사용합니다.
END{print sum}
마지막으로sum의 결과를 표시합니다.
평균을 계산하려면 합계를 계산한 다음 NR(기록된 수량)에 따라sum를 나눈다
$ awk -F , '{sum = sum + $NF} END{print "Average:",sum/NR}' score.csv
Average: 62
굉장히 어렵지만.{sum=sum+$NF}에서
합계를 계산한 후
END{print "Average:", sum/NR}
END는 마지막으로 "Average:"라는 단어를 내보냅니다.
sum/NR의 합계 값은 NR(처리된 기록의 총수)/(나누기)
출력!
내 생각에는 이 뜻 (@@)
어렵게 만든 지령은 awk 파일에 저장하세요.
저장된 파일은 -f 옵션으로 출력할 수 있습니다.
$ vim average.awk
$ cat average.awk
{sum = sum + $NF} END{print "Average:",sum/NR}
$ awk -F , -f average.awk score.csv
Average: 62
하하!(@_@)총결산
잠깐만!awk 명령으로 패턴 검색, 텍스트 처리용 ① 완성하지 못한 녀석 - F 옵션은 되잖아!
$ cat /etc/passwd | awk -F : '{print $4,$5}'
root 0
bin 1
daemon 2
adm 4
lp 7
sync 0
shutdown 0
됐다!(><)하하!엑셀을 만든 사람은 정말 대단해!
Reference
이 문제에 관하여(awk 명령을 통한 패턴 검색, 텍스트 처리 ②), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/suiudou/articles/f0ba0065fca3ec텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)