Shell——文本处理工具

cut

cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
其实可以看做grep是筛选行,cut是筛选列

基本用法

  • cut [选项参数] filename
  • 说明:默认分隔符是制表符

选项参数说明

在这里插入图片描述

vim cut.txt

dong shen
guan zhen
wo wo
lai lai
le le

练习

  1. 切割cut.txt 第一列
cut -d " " -f 1 cut.txt

在这里插入图片描述
2. 切割cut.txt 第二、三列

cut -d " " -f 2,3 cut.txt

在这里插入图片描述
3. 在cut.txt 文件中切割出guan

cat cut.txt |grep guan 

在这里插入图片描述

 cat cut.txt |grep guan | cut -d ' ' -f 1

在这里插入图片描述
4. 选取系统PATH 变量值,第2 个“:”开始后的所有路径:

 ifconfig ens33

在这里插入图片描述

# 通过grep筛选出ip行
ifconfig ens33 |grep netmask

在这里插入图片描述

# 通过cut选出ip,从最开始空格开始数,是第十个字符
ifconfig ens33 |grep netmask |cut -d " " -f 10

在这里插入图片描述

awk

一个强大的文本分析工具,把文件逐行的读入,以空格为默认分隔符将每行切片,切开
的部分再进行分析处理。

基本用法

  • awk [选项参数] ‘/pattern1/{action1} /pattern2/{action2}...’ filename
  • pattern:表示awk 在数据中查找的内容,就是匹配模式
  • action:在找到匹配内容时所执行的一系列命令

选项参数说明

在这里插入图片描述

cp /etc/passwd ./
  1. 搜索passwd 文件以root 关键字开头的所有行,并输出该行的第7 列。
# cut实现
cat passwd |grep ^root  |cut -d ":" -f 7

/bin/bash

 cat passwd |awk -F : '/^root/{print $7}'

/bin/bash

  1. 搜索passwd 文件以root 关键字开头的所有行,并输出该行的第1 列和第7 列,中间以“,”号分割。
cat passwd |awk -F : '/^root/{print $1","$7}'

root,/bin/bash

注意:只有匹配了pattern 的行才会执行action。

  1. 只显示/etc/passwd 的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell 在最后一行添加"this is the end of the file"。
cat passwd |awk -F : 'BEGIN{print "User,shell"} {print $1","$7} END{print "end of the file"}'

在这里插入图片描述
在这里插入图片描述
注意:BEGIN 在所有数据读取行之前执行;END 在所有数据执行之后执行。

  1. 将passwd 文件中的用户id 增加数值1 并输出
cat passwd |awk -F : '{print $3}'

在这里插入图片描述

# 可以直接+1
cat passwd |awk -F : '{print $3+1}'

在这里插入图片描述

# 也可以通过变量
cat passwd |awk -v i=1 -F : '{print $3+i}'

在这里插入图片描述

#增加了额外的字符
cat passwd |awk -v i=1 -F : '{print"用户ID+1:" $3+i}'

在这里插入图片描述

awk 的内置变量

在这里插入图片描述

  1. 统计passwd 文件名,每行的行号,每行的列数
# 文件名无法输出,是因为通过管道方式实现的
cat passwd |awk -F : '{print"文件名:"FILENAME "行号:"NR "列数:"NF  }'

在这里插入图片描述

# 现在文件名就能正常实现了
awk -F : '{print"文件名:"FILENAME "行号:"NR "列数:"NF  }' passwd

在这里插入图片描述

# 进行了分割
awk -F : '{print"文件名:"FILENAME ",行号:"NR ",列数:"NF  }' passwd 

在这里插入图片描述
2. 查询ifconfig 命令输出结果中的空行所在的行号

# grep -n表示显示行号 ^$表示空行
ifconfig |grep -n ^$

在这里插入图片描述

 ifconfig |awk '/^$/{print NR}'

9
18
26
3. 切割IP

 ifconfig |grep mask

在这里插入图片描述

 ifconfig |grep netmask |cut -d " " -f 10

在这里插入图片描述

# awk 会从第一个非空字符开始计
 ifconfig |awk -F " " '/mask/{print$2}'

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值