차이점: 1. sed는 스트림 편집기이고 awk는 텍스트 서식 지정 도구 및 보고서 생성기입니다. 2. awk는 파일 추출 및 구성에 적합하고 sed는 파일 편집에 적합합니다. 행 단위로 처리가 이루어지는데, awk가 행을 읽을 때는 필드로 잘라서 필드(열) 단위로 세부 처리를 합니다.
이 튜토리얼의 운영 환경: CentOS 6 시스템, Dell G3 컴퓨터.
awk는 문서 데이터 처리를 위한 강력한 기능을 갖춘 프로그래밍 언어입니다. Awk는 형식이 지정된 메시지나 대용량 텍스트 파일에서 데이터를 추출하는 데 적합합니다.
awk 명령은 파일을 한 줄씩(1줄부터 마지막 줄까지) 검색하여 대상 텍스트가 포함된 줄을 찾습니다. 일치에 성공하면 사용자가 원하는 작업이 해당 줄에서 수행됩니다. 라인으로 처리됩니다.
awk 명령의 기본 형식은 다음과 같습니다.
awk [选项] '脚本命令' 文件名
이 명령에 일반적으로 사용되는 옵션과 해당 의미는 표 1에 나와 있습니다.
옵션 | 의미 |
---|---|
-F fs | awk 명령의 기본 구분 기호는 공백 또는 탭입니다. |
-f 파일 | 명령줄에 직접 입력하는 대신 스크립트 파일에서 awk 스크립트 지침을 읽어보세요. |
-v var=val | 프로세스를 실행하기 전에 변수 var를 설정하고 장치에 초기 값인 val을 제공합니다. |
awk 的强大之处在于脚本命令,它由 2 部分组成,分别为匹配规则和执行命令,如下所示:
'匹配规则{执行命令}'
这里的匹配规则,和 sed 命令中的 address 部分作用相同,用来指定脚本命令可以作用到文本内容中的具体行,可以使用字符串(比如 /demo/,表示查看含有 demo 字符串的行)或者正则表达式指定。另外需要注意的是,整个脚本命令是用单引号('')括起,而其中的执行命令部分需要用大括号({})括起来。
在 awk 程序执行时,如果没有指定执行命令,则默认会把匹配的行输出;如果不指定匹配规则,则默认匹配文本中所有的行。
举个简单的例子:
[root@localhost ~]# awk '/^$/ {print "Blank line"}' test.txt
在此命令中,/^$/ 是一个正则表达式,功能是匹配文本中的空白行,同时可以看到,执行命令使用的是 print 命令,此命令经常会使用,它的作用很简单,就是将指定的文本进行输出。因此,整个命令的功能是,如果 test.txt 有 N 个空白行,那么执行此命令会输出 N 个 Blank line。
sed 命令采用的是流编辑模式,最明显的特点是,在 sed 处理数据之前,需要预先提供一组规则,sed 会按照此规则来编辑数据。
sed 会根据脚本命令来处理文本文件中的数据,这些命令要么从命令行中输入,要么存储在一个文本文件中,此命令执行数据的顺序如下:
每次仅读取一行内容;
根据提供的规则命令匹配并修改数据。注意,sed 默认不会直接修改源文件数据,而是会将数据复制到缓冲区中,修改也仅限于缓冲区中的数据;
将执行结果输出。
当一行数据匹配完成后,它会继续读取下一行数据,并重复这个过程,直到将文件中所有数据处理完毕。
sed 命令的基本格式如下:
sed [选项] [脚本命令] 文件名
该命令常用的选项及含义,如表 1 所示。
选项 | 含义 |
---|---|
-e 脚本命令 | 该选项会将其后跟的脚本命令添加到已有的命令中。 |
-f 脚本命令文件 | 该选项会将其后文件中的脚本命令添加到已有的命令中。 |
-n | 默认情况下,sed 会在所有的脚本指定执行完毕后,会自动输出处理后的内容,而该选项会屏蔽启动输出,需使用 print 命令来完成输出。 |
-i | 此选项会直接修改源文件,要慎用。 |
成功使用 sed 命令的关键在于掌握各式各样的脚本命令及格式,它能帮你定制编辑文件的规则。
sed是流编辑器,而awk是文本格式化工具,报告生成器
如果文件是格式化的,即由分隔符分为多个域的,优先使用awk
awk适合对文件的抽取整理,sed适合对文件的编辑。
awk适合按列(域)操作,sed适合按行操作
sed:每次读入一行来处理的,sed 适合简单的文本替换和搜索,sed读取一行,以行作为单位,进行处理。
awk:每次读入一行来处理的(同sed),但awk读取一行,切割成字段,以字段(列)为单位,进行细节处理。
相关推荐:《Linux视频教程》
위 내용은 리눅스에서 sed와 awk의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!