17_Shell好用工具:awk

17_Shell好用工具:awk

grep:查找

sed:编辑

cut:切割

awk:切割 + 可以通过定义变量、流程控制进行深度分析加工

一、awk内置变量

内置变量列出了几个常用的

内置变量 含义
FILENAME 文件名
NF Number Of Fields,单行总列数
NR Number Of Records,单行行号
$n $0 整条记录 $1 第一列 $2 第二列
$NF 最后一列

二、awk基本使用场景举例

awk基本语法:
awk [options] ‘pattern{action}’ filename

2.1、默认分隔符

#默认分割符是“空格”
echo "123 456 789" | awk '{print $1"&&"$2"&&"$3}'

在这里插入图片描述

2.1、自定义分隔符

#使用 ":" 分隔字符串,并打印1-6列
awk -F ':' '{print $1 $2 $3 $4 $5 $6}' awk_bak.txt

在这里插入图片描述

2.2、内置变量

#打印文件中文件名、行号、列数
#方式1:
awk '{print "文件名:"FILENAME " 行号:"NR" 列数:"NF" 内容:"$0}' awk.txt

#方2:(推荐)
awk '{printf("文件名:%s 行号:%s 列数:%s 内容:%s\n", FILENAME, NR, NF, $0)}' awk.txt

在这里插入图片描述

在这里插入图片描述

2.3、指定行号

#打印行号等于5的行的所有内容
awk 'NR==5{print $0}' awk.txt

在这里插入图片描述

2.4、正则表达式

#打印包含Holen的行的所有内容
awk '/Holen/{print $0}' awk.txt

#打印以"-"开头的行
ll | awk '/^-/'

#打印以".txt"结尾的行
ll | awk '/$*.txt/'

在这里插入图片描述

在这里插入图片描述

2.5、特殊列

#打印第一列和最后一列
awk '{print "第一列:"$1 " ,最后一列:" $NF}' awk.txt

#打印倒数第二列
awk '{print "第一列:"$1 ", 最后一列:" $NF ", 倒数第二列:" $(NF-1)}' awk.txt

在这里插入图片描述

在这里插入图片描述

2.6、指定范围行、指定列

#打印第1-3行全部内容
awk '{if(NR>=1&&NR<=3){print $0}}' awk.txt

#打印第1-3行第一列内容
awk '{if(NR>=1&&NR<=3){print $1}}' awk.txt

在这里插入图片描述

2.7、多分割符

#分割 1:2=3?4!5>6 并打印
awk -F '[:=?!>]' '{print $1 "&&" $2 "&&" $3 "&&" $4 "&&" $5}' awk_bak.txt

在这里插入图片描述

2.8、添加开始和结束

#在打印Hello world之前添加start,之后添加end
echo "Hello world." | awk 'BEGIN{print "start"}{print $0}END{print "end"}'

在这里插入图片描述

2.9、变量定义和循环

#手动拼接分割后的字符串   列数较少推荐
echo "123 456 789" | awk '{print $1$2$3}'

#循环凭借分割后的字符串   列数较多推荐
echo "123 456 789" | awk -v str="" '{for(n=1;n<=NF;n++){ str=str$n }} END{print str}'

在这里插入图片描述

3.12、运算

#awk计算 $n 和 变量的运算
echo "2.1" | awk -v i=1 '{ print $0+1}'

在这里插入图片描述

3.13、截取IP

#截取IP
ifconfig | awk '/192.168/{print $2}'

在这里插入图片描述

相关推荐

  1. shell-sed、awk、grep三剑客常场景

    2024-07-21 19:50:01       15 阅读
  2. Shellawk

    2024-07-21 19:50:01       60 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-21 19:50:01       52 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-21 19:50:01       54 阅读
  3. 在Django里面运行非项目文件

    2024-07-21 19:50:01       45 阅读
  4. Python语言-面向对象

    2024-07-21 19:50:01       55 阅读

热门阅读

  1. [强化学习马里奥 MarioRL]-- 环境ENV 3

    2024-07-21 19:50:01       18 阅读
  2. ubuntu 上安装中文输入法

    2024-07-21 19:50:01       17 阅读
  3. 记一次通过udev自动加在i2c接口触摸驱动过程

    2024-07-21 19:50:01       16 阅读
  4. 优选算法之滑动窗口(下)

    2024-07-21 19:50:01       18 阅读
  5. Linux常用命令(备忘自查)

    2024-07-21 19:50:01       15 阅读
  6. 计算机视觉发展历程

    2024-07-21 19:50:01       17 阅读