awk 명령을 통한 패턴 검색, 텍스트 처리 ②

2710 단어 메모지tech

개시하다


태엽을 잘 감기 위해서, 나는 리눅스 씨와 사이가 매우 좋다. 리눅스 씨는 검색뿐만 아니라, 많은 텍스트 편집 처리를 한다.
이번에는 텍스트 편집을 편리하게 하기 위해서, 나는 비 상호작용 편집기의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
됐다!(><)하하!
엑셀을 만든 사람은 정말 대단해!

좋은 웹페이지 즐겨찾기