찾다
운영 및 유지보수리눅스 운영 및 유지 관리리눅스 awk 명령을 사용하는 방법

리눅스 awk 명령을 사용하는 방법

Feb 01, 2023 pm 06:46 PM
linuxawk 명령

Linux에서 awk 명령은 텍스트 파일 형식을 지정하고 텍스트 파일의 보다 복잡한 처리 및 분석을 수행하는 데 적합한 텍스트 데이터 처리 도구입니다. 구문은 "awk [옵션] '패턴[액션]' 파일..."입니다. . Awk에는 강력한 텍스트 형식 지정 기능이 있습니다. 예를 들어, 불규칙해 보이는 로그 파일, 텍스트 파일 등의 경우 awk 명령을 전달한 후 형식화된 출력은 애플리케이션 수준 데이터 분석에 사용할 수 있는 전문적인 스타일이 됩니다.

리눅스 awk 명령을 사용하는 방법

이 튜토리얼의 운영 환경: linux7.3 시스템, Dell G3 컴퓨터.

Linux 시스템에는 awk라는 더 강력한 텍스트 데이터 처리 도구가 있습니다. 이는 1970년대 후반에 탄생했는데, 이것이 많은 Linux 사용자에게 영향을 미친 이유 중 하나일 수 있습니다.

어떤 사람들은 awk 명령의 이름이 어색한 단어에서 유래했다고 추측했습니다. 실제로는 그렇지 않습니다. 이 명령의 설계자는 3명이며, 그들의 성은 마스터 성의 첫 글자인 Aho, Weingberger 및 Kernighan입니다.

awk에는 강력한 텍스트 형식 지정 기능이 있습니다. 예를 들어 불규칙해 보이는 로그 파일, 텍스트 파일 등의 경우 awk 명령을 전달한 후 형식화된 출력은 애플리케이션 수준에서 사용할 수 있는 전문적인 스타일이 됩니다.

awk는 조건부 판단, 배열, 루프 및 기타 여러 기능을 지원하는 프로그래밍 언어와 같습니다.

linux 삼총사

  • grep은 단순히 텍스트 콘텐츠를 찾거나 일치시키는 데 능숙합니다. sed, 텍스트 편집에 능숙하고 일치하는 텍스트 콘텐츠를 처리합니다.

  • awk, 텍스트 파일 형식 지정에 적합하고 텍스트 파일의 더 복잡한 처리 및 분석을 수행합니다.

  • awk 이론적 기반

1, awk Syntax

awk  [option]  'pattern[action]'  file ...

awk   参数       条件动作           文件

action은 텍스트 형식 지정에 능숙하고 형식화된 결과를 출력할 수 있으므로 가장 일반적으로 사용되는 작업은 printf리눅스 awk 명령을 사용하는 방법

2입니다.

awk는 기본적으로 공백을 구분자로 사용하며 여러 공백도 구분자로 하나의 공백으로 인식합니다.

awk는 파일을 한 줄씩 처리하고 한 줄을 처리한 후 awk를 처리할 수 있습니다. 사용자가 지정합니다. 지정하지 않으면 기본적으로 공백이 사용됩니다.

  • 1. awk 내장 변수

내장 변수

설명
$n구분 기호 지정 후 현재 n번째 열이 위치한 필드$0레코드의 전체 행FS필드 구분 기호, 기본값은 공백NF(필드 수)필드가 분리된 후 현재 NR(레코드 수)은 몇 개입니까?

更多的内置变量,可通过 man awk命令进行查看

简单案例展示

提前准备一个文本,内容如下

리눅스 awk 명령을 사용하는 방법

1、输出第二列内容

awk '{print $2}' alx.txt

리눅스 awk 명령을 사용하는 방법

2、输出多列内容

直接在第一步后面的基础上追加,中间用 “,” 分割

awk '{print $2,$3}' alx.txt

리눅스 awk 명령을 사용하는 방법

3、查看第三行内容

考察对NR的使用,NR表示第N行记录的模式匹配

awk 'NR==3{print $0}' alx.txt

리눅스 awk 명령을 사용하는 방법

输出多行

awk 'NR==5,NR==6{print $0}' alx.txt

리눅스 awk 명령을 사용하는 방법

4、输出从第3到第五行,并显示行号

awk 'NR==3,NR==5 {print NR,$0}' alx.txt

리눅스 awk 명령을 사용하는 방법

5、自定义输出内容

某些情况下,需要给每一列添加类似于excel的表头信息,就可以考虑使用awk的自定义输出;

awk '{print "第一列: "$1,"第二列: "$2}' alx.txt

리눅스 awk 명령을 사용하는 방법

需要注意的是大括号外面的使用 ’ 单引号,括号里面的使用双引号

二、awk参数

参数 说明
-F 指定分隔字段符
-v 定义或修改一个awk内部变量
-f 从脚本文件中读取awk命令

上文谈到,awk默认的字段分隔符为空格,但是像下面这样的文本,以 # 为分隔符,就需要用到自定义分隔符;

리눅스 awk 명령을 사용하는 방법

1、显示第一列和第二列内容

awk -F "#" '{print $1,$2}' zcy2.txt

리눅스 awk 명령을 사용하는 방법

2、显示文件第一列,倒是第一列,和倒数第二列的内容

awk '{print $1,$(NF-1),$(NF-2)}' alx.txt

1리눅스 awk 명령을 사용하는 방법

3、取出本机的IP地址

1리눅스 awk 명령을 사용하는 방법

使用awk的方式获取的话,如果以空格为分隔符,我们发现目标字段在第二行的第二列,使用下面的命令即可,看起来,比起sed和grep命令似乎更简单;

ifconfig eth0 | awk 'NR==2{print $2}'

1리눅스 awk 명령을 사용하는 방법

4、取出密码文件中的第一列和最后一列

考察对自定义输入分隔符的使用,可以看到,下面的文本文件中,可以考虑使用 : 进行分割;

1리눅스 awk 명령을 사용하는 방법

awk -F ':' '{print $1,$NF}' pwd2.txt

1리눅스 awk 명령을 사용하는 방법

三、OFS输出分隔符

通过上文的学习,我们知道awk命令执行后,默认采用空格分割字段,而这个空格就是默认的输出分割符,

单在某些情况下,为了将数据展示的效果更加醒目一些,就可以使用OFS的自定义输出分隔符;

仍然以上面的密码文本为例,输出第一列和最后一列的字段;

awk -F ':' -v OFS=' *** ' '{print $1,$NF}' pwd2.txt

该表默认输出分隔符,直接在awk后面使用: -v OFS=‘自定义输出分隔符’

1리눅스 awk 명령을 사용하는 방법

四、awk变量

awk参数

参数 说明
-F 指定分隔字段符
-v 定义或修改一个awk内部变量
-f 从脚本文件中读取awk命令

对于awk来讲,变量分为:内置变量和自定义变量

awk内置变量

参数 说明
FS 输入字段分隔符,默认为空白字符
OFS 输出字段分隔符,默认为空白字符
RS 输入记录分隔符,指定输入时的换行符
ORS 输出记录分隔符,输出时用指定符号替换换行符
NF 当前行的字段个数,字段数量
NR 行号,当前处理文本行的行号
FNR 各文件分别计数的行号
FILENAME 当前文件名
ARGC 命令行参数个数
ARGV 数组,保存的是命令行所给定的各个参数

比较常用的内置变量包括: NR,NF,FNR

FILENAME 使用

FILENAME 为awk的内置变量,通过下面这个命令,可以看到在每行记录之前,输出了当前文件名称;

awk 'NR==1,NR==3{print FILENAME,$0}' alx.txt

1리눅스 awk 명령을 사용하는 방법

ARGV使用

先来看下面这条命令的执行结果

awk 'NR==1,NR==3{print ARGV[0],ARGV[1],$0}' alx.txt

1리눅스 awk 명령을 사용하는 방법

可以发现,在输出的每一行记录前面,拼上了 awk 和 alx.txt这两个字段,这两个字段就是这行命令整体解析出来的2个内置参数;

自定义变量

看下面这条命令输出效果,通过-v参数,可以自定义变量进行参数传递;

awk -v myname="zcy" 'BEGIN{print "我的名字是?" ,myname}'

1리눅스 awk 명령을 사용하는 방법

五、awk格式化输出

在上文,我们接触的是awk的输出功能,主要使用了 print 这个进行输出,它只能对文本进行简单的输出,但是并不能美化或者修改输出格式;

printf 格式化输出

如果对C语言有过了解的同学,对printf 并不陌生,使用这个命令(函数)可以对文本进行格式化输出;

printf与print的几点区别

  • printf 需要指定format;
  • format 用于指定后面的每个 item输出格式;
  • printf 语句不会自动打印换行符; \n ; print 默认添加换行符;

如下,假如我们直接使用 printf 这样操作,看下效果

awk '{printf $0}' alx.txt

리눅스 awk 명령을 사용하는 방법

明显来说,把所有内容都输出到同一行了,这时候,就需要使用 printf的格式化输出来控制;

awk '{printf "%s\n", $0}' alx.txt

2리눅스 awk 명령을 사용하는 방법

再看一个案例,使用 printf 将文本中的每一列添加前置输出

awk '{printf "第一列:%s   第二列:%s   第三列:%s\n" ,$1,$2,$3}' alx.txt

2리눅스 awk 명령을 사용하는 방법

六、awk模式pattern

上文了解到,awk的语法如下 :

awk [option] ‘pattern[action]’ file …

而且我们了解到,awk是按行处理文本,以上都是关于 print 相关,接下来,聊聊pattern相关的内容;

在pattern中,有个比较常见的pattern,BEGIN和END;

  • BEGIN 模式是处理文本之前需要执行的动作;
  • END模式是处理完成所有的行之后执行的操作;
awk 'BEGIN{print "小明在学linux"}'

2리눅스 awk 명령을 사용하는 방법

或者下面这样

awk 'BEGIN{print "小明在学linux"} {print $0}END{print "处理结束"}' alx.txt

2리눅스 awk 명령을 사용하는 방법

注意:BEGIN 和 END分别放到处理文本内容前后即可

awk如果不指定模式是按行处理,如果指定了模式,只有符合模式的才会被处理

awk常用模式

关系运算符 说明
小于
小于等于
== 等于
!= 不等于
>= 大于等于
~ 匹配正则
!~ 不匹配正则

1、打印前三行的文本内容

awk &#39;NR<=3{print $0}&#39; alx.txt

2리눅스 awk 명령을 사용하는 방법

2、匹配密码文本中含有 zcy 的行

awk &#39;/^zcy/{print $0}&#39; pwd.txt

2리눅스 awk 명령을 사용하는 방법

3、格式化输出 /etc/passwd 的部分字段

awk -F ":" &#39;BEGIN{print"用户名\t\t\t字段1\t\t     字段2\t\t     权限"} {printf "user:%-20s%-20s%-20s%-20s\n", $1,$4,$5,$7}&#39; pwd.txt

2리눅스 awk 명령을 사용하는 방법

4、找出pwd文件中nologin的用户

2리눅스 awk 명령을 사용하는 방법

awk &#39;/\/sbin\/nologin$/{print NR,$0}&#39; pwd.txt

2리눅스 awk 명령을 사용하는 방법

5、找出 下面这个区间的文本行

리눅스 awk 명령을 사용하는 방법

awk &#39;/^daemon/,/^operator/{print NR,$0}&#39; pwd.txt

3리눅스 awk 명령을 사용하는 방법

相关推荐:《Linux视频教程

위 내용은 리눅스 awk 명령을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
Linux의 유지 보수 모드 : 언제 및 왜 사용해야하는지Linux의 유지 보수 모드 : 언제 및 왜 사용해야하는지Apr 25, 2025 am 12:15 AM

Linux 유지 관리 모드 사용 타이밍 및 이유 : 1) 시스템이 시작될 때 2) 주요 시스템 업데이트 또는 업그레이드를 수행 할 때 3) 파일 시스템 유지 관리를 수행 할 때. 유지 보수 모드는 안전하고 제어 된 환경을 제공하여 운영 안전 및 효율성을 보장하고 사용자에게 미치는 영향을 줄이며 시스템 보안을 향상시킵니다.

Linux : 필수 명령 및 운영Linux : 필수 명령 및 운영Apr 24, 2025 am 12:20 AM

Linux의 필수 명령에는 다음이 포함됩니다. 1.LS : 목록 디렉토리 내용; 2.CD : 작업 디렉토리 변경; 3.mkdir : 새 디렉토리 생성; 4.RM : 파일 또는 디렉토리 삭제; 5.CP : 파일 또는 디렉토리 복사; 6.mv : 파일 또는 디렉토리를 이동하거나 바꾸십시오. 이러한 명령은 사용자가 커널과 상호 작용하여 파일 및 시스템을 효율적으로 관리하는 데 도움이됩니다.

Linux 작업 : 파일, 디렉토리 및 권한 관리Linux 작업 : 파일, 디렉토리 및 권한 관리Apr 23, 2025 am 12:19 AM

Linux에서 파일 및 디렉토리 관리는 LS, CD, MKDIR, RM, CP, MV 명령을 사용하며 권한 관리는 CHMOD, Chown 및 CHGRP 명령을 사용합니다. 1. 파일 및 디렉토리 관리 명령 LS-L 목록 상세 정보와 같은 MKDIR-P는 디렉토리를 재귀 적으로 생성합니다. 2. CHMOD755FILE SET 파일 권한 설정, ChownUserFile 변경 파일 소유자 및 CHGRPGROUPFILE와 같은 허가 관리 명령은 파일 그룹을 변경합니다. 이러한 명령은 파일 시스템 구조 및 사용자 및 그룹 시스템을 기반으로하며 시스템 호출 및 메타 데이터를 통해 작동 및 제어합니다.

Linux의 유지 관리 모드 란 무엇입니까? 설명했다Linux의 유지 관리 모드 란 무엇입니까? 설명했다Apr 22, 2025 am 12:06 AM

MaintenanceModeInlinlinlinuxisspecialbootenvernmentforcriticalsystemmaintenancetasks.itallowsAdministratorStorformtaskSlikeresettingpasswords, Repairingfilesystems, Andrecoveringfrombootfailuresinaminimalenvernment.toentermaintingancemode, intermainteancemode

Linux : 기본 부분에 대한 깊은 다이빙Linux : 기본 부분에 대한 깊은 다이빙Apr 21, 2025 am 12:03 AM

Linux의 핵심 구성 요소에는 커널, 파일 시스템, 쉘, 사용자 및 커널 공간, 장치 드라이버 및 성능 최적화 및 모범 사례가 포함됩니다. 1) 커널은 하드웨어, 메모리 및 프로세스를 관리하는 시스템의 핵심입니다. 2) 파일 시스템은 데이터를 구성하고 Ext4, BTRF 및 XFS와 같은 여러 유형을 지원합니다. 3) Shell은 사용자가 시스템과 상호 작용하고 스크립팅을 지원하는 명령 센터입니다. 4) 시스템 안정성을 보장하기 위해 사용자 공간을 커널 공간과 별도로 분리하십시오. 5) 장치 드라이버는 하드웨어를 운영 체제에 연결합니다. 6) 성능 최적화에는 튜닝 시스템 구성 및 다음 모범 사례가 포함됩니다.

Linux Architecture : 5 개의 기본 구성 요소를 공개합니다Linux Architecture : 5 개의 기본 구성 요소를 공개합니다Apr 20, 2025 am 12:04 AM

Linux 시스템의 5 가지 기본 구성 요소는 다음과 같습니다. 1. Kernel, 2. System Library, 3. System Utilities, 4. 그래픽 사용자 인터페이스, 5. 응용 프로그램. 커널은 하드웨어 리소스를 관리하고 시스템 라이브러리는 사전 컴파일 된 기능을 제공하며 시스템 유틸리티는 시스템 관리에 사용되며 GUI는 시각적 상호 작용을 제공하며 응용 프로그램은 이러한 구성 요소를 사용하여 기능을 구현합니다.

Linux 작업 : 유지 보수 모드 사용Linux 작업 : 유지 보수 모드 사용Apr 19, 2025 am 12:08 AM

Linux 유지 관리 모드는 Grub 메뉴를 통해 입력 할 수 있습니다. 특정 단계는 다음과 같습니다. 1) Grub 메뉴에서 커널을 선택하고 'e'를 눌러 편집, 2) 'Linux'라인 끝에 '단일'또는 '1'추가, 3) Ctrl X를 눌러 시작합니다. 유지 보수 모드는 시스템 수리, 비밀번호 재설정 및 시스템 업그레이드와 같은 작업을위한 안전한 환경을 제공합니다.

Linux : 복구 모드에 들어가는 방법 (및 유지 보수)Linux : 복구 모드에 들어가는 방법 (및 유지 보수)Apr 18, 2025 am 12:05 AM

Linux 복구 모드를 입력하는 단계는 다음과 같습니다. 1. 시스템을 다시 시작하고 특정 키를 눌러 Grub 메뉴를 입력하십시오. 2. (복구 계)로 옵션을 선택하십시오. 3. FSCK 또는 루트와 같은 복구 모드 메뉴에서 작업을 선택하십시오. 복구 모드를 사용하면 단일 사용자 모드에서 시스템을 시작하고 파일 시스템 검사 및 수리를 수행하고 구성 파일 편집 및 기타 작업을 수행하여 시스템 문제를 해결할 수 있습니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

VSCode Windows 64비트 다운로드

VSCode Windows 64비트 다운로드

Microsoft에서 출시한 강력한 무료 IDE 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경