一篇文章入门Unix中的AWK命令!
Unix中的AWK命令简介
Unix Shell脚本中的AWK命令是用来改变数据的形式和生成报告的。我们可以使用数字函数、逻辑运算符、变量和字符串函数来处理数据,而无需编译。AWK命令通常用于处理数据和扫描文件中的模式。它试图扫描一个或多个文件,检查其是否包含与所需的指定模式相匹配的模式,最后对其进行所需的操作。AWK命令是由三个人的名字首字母命名的--Aho、Weinberger和Kernighan。他们来自AT&T贝尔实验室,也在Unix Shell脚本中贡献了许多其他命令行提示。
AWK命令用于执行以下操作
- 定义变量。
- 使用数字函数或逻辑/算术运算符、变量或字符串。
- 应用循环或控制流动作。
- 生成报告。
AWK命令的基本语法
awk [options] [program] [file]
我们可以通过AWK命令做什么?
以下是在Unix中我们可以用AWK命令进行的操作列表。
- AWK命令最初试图逐行扫描一个文件。
- 将每个输入文件划分为与模式相匹配的字段。
- 然后,它试图将输入的文件与指定的模式进行比较。
- 最后,对匹配的行进行操作。
AWK命令用于转换数据文件,然后从中生成报告。它还用于对其进行算术或逻辑运算,以找出匹配的模式。
AWK命令用于执行以下操作。
- 定义变量。
- 使用数字函数或逻辑/算术运算符、变量或字符串。
- 应用循环或控制流操作。
- 生成报告。
AWK的语法。
awk [options] [selection action] [input_file]
如何在Unix中使用AWK命令的例子
让我们考虑有一个名为 "testing.txt "的文件,该文件的内容如下。
代码
cat testing.txt
输出
例子#1 - 选项 "print"。
为了打印文件中的所有内容,awk帮助打印文件中的所有内容行。在下面的例子中,我们没有使用任何模式,所以动作适用于文件中的行。默认情况下,没有任何模式参数的动作将打印文件中的全部数据/行。因此,我们可以看到,下面文件中的所有行都被打印出来了。
语法
awk '{print}' file_name.txt
代码
awk '{print}' testing.txt
输出
例子 #2 - 模式匹配。
要打印文件中的指定模式,我们可以使用下面的语法。它将列出输入参数中的匹配模式,并在输出中列出数据。
语法
awk '/pattern/ {print}' file_name.txt
代码
awk '/student/ {print}' testing.txt
输出
例子 #3 - 分行到字段。
我们也可以用空白作为默认的分隔符来分割行中的记录。例如,如果我们在一行中有4个字,它将分别被存储为1、2、3和4,而0美元将打印完整的一行。
语法
awk '{print $n, $m}' file_name.txt
代码
awk '{print $2, $4}' testing.txt
输出
变量 Unix中的内置AWK命令
- NF:带有NF变量的AWK命令用于计算所传递的输入参数中的字段数量。
- RS。带RS的AWK命令用于存储当前输入参数中的记录分隔符。默认情况下,如果没有提到指定的变量,新的一行被认为是记录分隔符。
- NR:AWK命令及其变量NR有助于计算输入记录的数量。一般来说,行被认为是记录。
- FS:使用FS命令时,我们需要指定字段分隔符。默认情况下,如果没有提到具体的分隔符,空白被认为是分隔符。它用于根据输入行来划分字段。
- ORS:带有OFS变量的AWK命令用于存储输出记录分隔符,该分隔符被AWK命令用来打印输出行。新行字符被视为默认的记录分隔符。
- OFS:带有OFS变量的AWK命令用于存储AWK打印输出时的输出字段分隔符。空格字符被当作默认的字段分隔符。
AWK命令中变量的例子
下面是提到的例子。
例子#1 - 变量NF.
当我们想打印文件中记录的最后一行时,我们可以使用带有变量NF的awk命令。
语法
awk '{print $NF}' file_name.txt
代码
awk '{print $NF}' testing.txt
输出
例子#2 - 变量NR。
AWK命令及其变量NR有助于计算输入记录的数量。一般来说,行被认为是记录。
语法
awk '{print $NR <file separator> $n}' file-name.txt
代码
awk '{print NR "-" $2}' testing.txt
输出
例子#3 - 变量OFS。
AWK命令中的OFS变量用于存储AWK打印输出时的输出字段分隔符。空格字符被视为默认的字段分隔符。
语法
awk 'OFS=”field_separator” {print $n, $m, $o}
代码
date | awk 'OFS="/" {print $2, $3, $6}' date | awk 'OFS="-" {print $2, $3, $6}'
输出
例子 #4 - 变量END.
为了计算输入文件的行数,我们可以在awk命令中使用END变量,如下所示。
语法
awk 'END {print NR}' file_name.txt
代码
awk 'END {print NR}' testing.txt
输出
例子 #5 - 变量BEGIN.
这个BEGIN变量是用来在任何记录被执行之前设置动作的。我们也可以在处理记录之前打印任何我们想打印的数据,如下所示。
语法
awk 'BEGIN { print “print your data”} ' file-name.txt
代码
awk 'BEGIN {print "Starting of the line"}; {print $2}; ' testing.txt
输出
结论
Unix Shell脚本中的AWK命令用于高级的文本处理。它通常被用于模式匹配和作为报告工具。通过使用awk,我们可以定义一组要在输入文件上执行的动作。作为参数传递的输入数据被划分为字段和记录。
- 在C 中把字符串转换为整数的两种简单方法
- 如何在Flutter中实现任何UI
- Gatsby v4的新内容
- 创建一个Puppeteer微服务以部署到Google Cloud Functions
- 在Blazor中测试。一个完整的教程
- 在React中使用Plotly来构建动态图表
- 分页、加载更多按钮和无限滚动的指南
- 用新的Firebase v9.x Web SDK重构一个React应用
- 在使用地理定位API时,你需要知道什么?
- 在PostgreSQL v14中,JSON有什么新功能?
- 使用React的函数式编程的基础知识
- 使用Dart FFI访问Flutter中的本地库
- 使用视频播放器插件在Flutter中处理视频
- 改进过度约束的Rust库API
- 用Svelte建立一个PWA
- 用Flask和D3.js构建交互式图表
- 在Go中使用JSON。带例子的指南
- 一篇文章入门Unix中的AWK命令!
- C 哈希
- Dotfiles - 什么是Dotfile以及如何在Mac和Linux中创建它