【Linux】文本处理工具实操:cut、awt

cut

cut - 在文件的每一行中提取片断

说明:默认分隔符是制表符

cut [选项参数] filename
	-f 提取通过分割符分割之后的第几列,与-d一起使用
	-d 分隔符,按照指定分隔符分割列,默认是制表符“\t”
	-c 按字符进行切割。多用于汉字。用在英文上跟-b没有什么区别
	-b 按字节进行切割
	-s 不包括那些不含分隔符的行,只与-f参数一起使用

awt

awk [选项参数] ‘/pattern1/{action1} /pattern2/{action2}...’ filename
	pattern:表示 awk 在数据中查找的内容,就是匹配模式(正则)
	action:在找到匹配内容时所执行的一系列命令
		print 输出
		示例:'BEGIN{print "user, shell"} {print $1","$7}END{print "dahaige,/bin/zuishuai"}'
	-F 指定输入文件分隔符
	-v 赋值一个用户定义变量
    	i=1
    			示例:'{print $3+i}'
内置变量
		FILENAME 文件名
		NR 已读的记录数(行号)
		NF 浏览记录的域的个数(切割后,列的个数)

案例实操

1 环境准备

cut.txt

shen zhen
jie yang
guang zhou
dong guan
mao ming
hua zhou
hui zhou

passwd

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt

脚本文件:demo5

#!/bin/bash
echo "====================================cut=========================================="
echo "==========================cut.txt文件内容=================="
cat /root/桌面/cut.txt
echo "=======================1)切割cut.txt第一列================="
cut -f 1 -d " " cut.txt
echo "=====================2) 切割cut.txt第二,三列================"
cut -f 2,3 -d " " cut.txt
echo "====================3) 在cut.txt文件中切割出guang================="
cut -f 1 -d " " cut.txt | grep guang
echo "=============4)选取系统PATH变量值,第2个":"开始后的所有路径:========"
echo $PATH | cut -d ":" -f 3- 
echo "=================5)切割ifconfig后打印的ip地质================"
ifconfig ens33 | grep netmask | cut -f 10 -d " "
echo " "
echo " "
echo " "
echo "====================================awk==============================================="
echo "1)搜索passwd文件以root关键字开头的所有行,并输出该行的第7列"
awk -F : '/^root/{print $7}' passwd
echo "2) 搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”分割"
awk -F : '/^root/{print $1","$7}' passwd
echo "3) 只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell。在最后一行添加“lzw,/bin/zuishuai"
awk -F : 'BEGIN{print "user  shell"}{print $1","$7}END{print "lzw,/bin/zuishuai"}' passwd
echo "4) 将passwd文件中的用户id增加数值1并输出"
awk -F : -v i=1 '{print $3+i}' passwd
echo " "
echo " "
echo " "
echo "====================================awk内置变量=============================="
echo "===============1)统计passwd文件名,每行的行号,每行的列数============="
awk -F : '{print "文件名:"FILENAME"行号:"NR"列数"NF}' passwd
echo "===============2) 查询ifconfig命令输出结果中的空行所在的行号==========="
ifconfig | awk '/^$/{print NR}'
echo "===============3) 切割IP=============================================="
ifconfig ens33 | grep netmask | awk -F " " '{print $6}' 

2 结果

[root@demo01 桌面]# sh demo5
====================================cut==========================================
==========================cut.txt文件内容==================
shen zhen
jie yang
guang zhou
dong guan
mao ming
hua zhou
hui zhou
=======================1)切割cut.txt第一列=================
shen
jie
guang
dong
mao
hua
hui
=====================2) 切割cut.txt第二,三列================
zhen
yang
zhou
guan
ming
zhou
zhou
====================3) 在cut.txt文件中切割出guang=================
guang
=============4)选取系统PATH变量值,第2个:开始后的所有路径:========
/usr/bin:/usr/sbin:/bin:/sbin:/root/bin
=================5)切割ifconfig后打印的ip地质================
192.168.100.101
 
 
 
====================================awk===============================================
1)搜索passwd文件以root关键字开头的所有行,并输出该行的第7列
/bin/bash
2) 搜索passwd文件以root关键字开头的所有行,并输出该行的第1列和第7列,中间以“,”分割
root,/bin/bash
3) 只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行前面添加列名user,shell。在最后一行添加“lzw,/bin/zuishuai
user  shell
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
sync,/bin/sync
shutdown,/sbin/shutdown
halt,/sbin/halt
lzw,/bin/zuishuai
4) 将passwd文件中的用户id增加数值1并输出
1
2
3
4
5
6
7
8
 
 
 
====================================awk内置变量==============================
===============1)统计passwd文件名,每行的行号,每行的列数=============
文件名:passwd行号:1列数7
文件名:passwd行号:2列数7
文件名:passwd行号:3列数7
文件名:passwd行号:4列数7
文件名:passwd行号:5列数7
文件名:passwd行号:6列数7
文件名:passwd行号:7列数7
文件名:passwd行号:8列数7
===============2) 查询ifconfig命令输出结果中的空行所在的行号===========
9
18
26
===============3) 切割IP==============================================
192.168.100.255
[root@demo01 桌面]# 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愿你满腹经纶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值