Shell(Linux)手册-awk

发布时间 2023-06-02 16:27:34作者: Mugetsukun

资料来源

awk知识点总结 | 骏马金龙
精通awk系列 | 骏马金龙
linux awk 命令使用详解 | 元宇宙-Metaverse
Linux awk 命令 | runoob

基础知识

格式化文本文件,对文本文件进行更复杂的加工处理、分析
Awk自动地搜索输入文件,并把每一个输入行切分成字段。许多工作都是自动完成的,例如读取每个输入行、字段分割、存储管理、初始化等。在AWK中不需声明变量数据类型,它内置字符串类型和数值类型。

awk [选项参数] 'script' var=value file(s)

awk [选项参数] -f scriptfile var=value file(s)

awk -F':' '$7 == "/bin/bash"{print "who use bash shell: ",$1}' /etc/passwd
这个 awk 命令用于查找使用 bash shell 的用户。下面是具体解释:

  • -F':' 表示使用冒号作为字段分隔符。
  • $7 == "/bin/bash" 表示匹配第 7 个字段等于 /bin/bash 的行。
  • {print "who use bash shell: ",$1} 表示打印符合条件的行的第 1 个字段,即用户名,以及带提示信息的字符串 "who use bash shell: "。
  • /etc/passwd 是需要处理的文件路径。
    假设有一个 /etc/passwd 文件,内容如下:
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
testuser:x:1000:1000:testuser:/home/testuser:/bin/bash

结果如下:

who use bash shell: root
who use bash shell: testuser

可以看到,输出了使用 bash shell 的用户,即root和testuser。

(指定一个符号或者正则为分隔字段的标志(-F':'),设定好匹配字段需要匹配的文本。用大括号区分执行命令,输入执行要求和字段(如{print $1,$2}),最后输入需要匹配文本的文件。)