当前位置: 首页 > news >正文

awk命令——功能强大的文本处理工具

目录

  • 什么是awk命令
  • awk命令处理文本的方式
  • awk命令的语法
  • awk命令的内置变量
  • awk命令的选项
  • awk命令的具体实例
    • 1. 读取t.txt文件每行第一个被空格分开的列
    • 2. 显示t.txt文件每一行的行号
    • 3. 查询t.txt文件带有字符t-z的行
    • 4. 显示t.txt文件的第一行
    • 5. 在第一行前面插入“//t.txt”
    • 6. 输出t.txt文件中被*分割开的第3行的第1-3列
    • 7. 输出t.txt文件每一行5遍
  • 下篇预告

什么是awk命令

awk命令,是一个功能强大的文本处理工具,他的名字是由它的三位创始人——Alfred Aho, Peter Weinberger和Brian Kernighan的首字母组合而来的,通过awk命令,可以是文本的处理变得轻松自如。

awk命令处理文本的方式

awk命令处理文本时,他会遍历文本的每一行,让每一行跟匹配条件进行匹配,如果匹配成功,就执行匹配条件后面的命令,否则就略过匹配条件后面的命令。直到遍历结束,awk命令才停止处理。

awk命令的语法

awk命令,它的核心就在于它自带的awk命令的语法和内置变量。

awk自带的命令语法,主要由正则构成的匹配条件及命令本身结合而成,像这样的组合可以有多个,并且可以直接拼接到一起。

awk '[匹配条件]{命令本身}...' 文件

awk的命令,跟我们学到的编程语言非常的相似。 只要你入了IT的大门,那么你就可以大概的学会它的命令。比如awk命令里的for循环,他几乎跟C/C++中的for循环一样,再比如awk命令里的**运算符,它跟python里的**运算符的功能也一样。

awk命令的内置变量

关于awk命令,唯一要好好记的则是awk命令的内置变量,因为通过内置变量,你可以轻松自如地得到某个文件的信息。

内置变量意义记巧
ARGC当前执行的awk命令参数个数,适用于统计被处理文件数量
ARGVawk命令参数数组
ENVIRON支持队列中系统环境变量的使用
FILENAMEawk命令处理到的文件名FILENAME的中文是“文件名”
FNR当前处理行对应在文件中的行号FNR = File + NR
FS输入域分隔符,等同于awk命令的选项-F,默认为空格FS = field spilt(fieid的意思是区域)
NF当前行处理的输入域的个数NF = num field
NR已处理的行数NR = num rows
OFS输出域分隔符OFS = output field spilt
ORS输出行分隔符ORS = output rows spilt
RS被处理行的分隔符RS = rows spilt
$n$0表示读取到的整一行,$1表示行的第一个输入域,$2表示行的第一个输入域,往后你也能推导出来awk命令中的$n ≈ shell中的$n
$NF被处理行的最后一个输入域$NF = $number finally

awk命令的选项

关于awk命令的选项,主要有这两种。

选项意义记巧
-v定义变量-v -> variable
-F设置输入域的分隔符-F -> field split

其中还要注意的是,这些选项是区分大小写的,你如果把-F写成-f了,那么就会awk命令报错。

awk命令的具体实例

学完awk命令之后,接下来就以下面的t.txt文本文件来举几个例子吧。

a b cd efg
1234567890 ~!@#$%^&*()_+   
/ //* *- *- //* */ -* / *-- -* 
joy it 66666666666666666666666666666666   
the the is the the      
awk is good ^v^  

1. 读取t.txt文件每行第一个被空格分开的列

awk '{print $1}' t.txt

2. 显示t.txt文件每一行的行号

awk '{print NR, $0}' t.txt

3. 查询t.txt文件带有字符t-z的行

awk '{print $1}' t.txt

4. 显示t.txt文件的第一行

awk '{if(1 == NR){print $0}}' t.txt

5. 在第一行前面插入“//t.txt”

awk '{if(1 == NR){printf("//%s\n", FILENAME)}print $0}' t.txt

6. 输出t.txt文件中被*分割开的第3行的第1-3列

awk -F* '{if(3 == NR){print $1, $2, $3}}' t.txt

7. 输出t.txt文件每一行5遍

awk -v i=0 '{for (i=0;i<5;i++){print $0}}' t.txt

下篇预告

sort命令——排序必定好用的命令

http://www.xdnf.cn/news/53515.html

相关文章:

  • adb启动没有成功响应解决方法
  • 【去哪儿网】登录滑块逆向算法AES加密分析(逆天滑块轨迹)
  • 柱状图QCPBars
  • Linux系统之部署Dillinger个人文本编辑器
  • vulnhub five86系列靶机合集
  • Windows 10 登录界面隐藏账号
  • DSP28335入门学习——第一节:工程项目创建
  • 使用BQ76PL455和STM32的SAE电动方程式电动汽车智能BMS
  • 聊聊Spring AI Alibaba的FeiShuDocumentReader
  • qwen 32B 模型配置文件参数解释;48 个堆叠的解码器层是什么意思; `max_window_layers`的作用; 定义 `device_map`
  • 节点流和处理流基本使用
  • Python 一等函数( 高阶函数)
  • 【题解-OpenJudge】和为给定数
  • 【人工智能】Agent未来市场与技术潜力分析
  • Linux守护进程
  • 生成对抗网络(Generative adversarial network——GAN)
  • 【数据库】索引
  • ADVB协议
  • 软件安装,systemctl命令,软连接
  • 辅助函数构造题目(缓慢更新,遇到更道)
  • 4 Matplotlib 文字图例
  • HCIP第三次作业
  • (undone) 吴恩达版提示词工程 2. 指南
  • 【OS】深入理解Linux的五种IO模型
  • LED闪烁示例(STC89C52单片机)
  • 1001: 自由落体的计算
  • window.addEventListener 和 document.addEventListener
  • 常用的求职网站
  • 000.初识 dyld
  • nuxt3前端开发以及nuxt3和nuxt2项目的详细差异点