Shell笔记6-Shell工具

cut

cut是负责剪切数据用的,cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。

基本用法

cut [选项参数] filename

选项参数说明

-f:列号,提取第几列
-d:分隔符,按照指定的分隔符分隔列,默认的分隔符是制表符tab

例子

修改demo.txt。

11      12      13
21      22      23
31      32      33
# 切割demo.txt的第一列
[root@localhost opt]# cut -f 1 demo.txt
11
21
31
# 切割demo.txt的第1,2列
[root@localhost opt]# cut -f 1,2 demo.txt
11      12
21      22
31      32
# 切割系统变量PATH第二个":"后的所有路径
[root@localhost opt]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@localhost opt]# echo $PATH | cut -d : -f 2-
/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

sed

sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。

基本用法

sed [选项参数] 'command' filename

选项参数说明

-e:直接在指令列模式进行sed动作编辑,加了-e可以在一条命令里执行多个操作,不加的话,只能执行一个操作。

命令功能描述

a:新增,a后面接字符串,在下一行出现
d:删除
s:查找并替换

例子

修改demo.txt

# 在第二行后添加"x y z"
[root@localhost opt]# sed "2a x y z" demo.txt
11      12      13
21      22      23
x y z
31      32      33
# 查看demo.txt,并没有变化
[root@localhost opt]# cat demo.txt
11      12      13
21      22      23
31      32      33
# 删除带22的行
[root@localhost opt]# sed "/22/d" demo.txt
11      12      13
31      32      33
# 将2换成x,其中g代表global
[root@localhost opt]# sed "s/2/x/g" demo.txt
11      1x      13
x1      xx      x3
31      3x      33
# 将第3行删除,并将3替换为y
[root@localhost opt]# sed -e "3d" -e "s/3/y/g" demo.txt
11      12      1y
21      22      2y

awk

把文件逐行读入,以空格为默认分隔符切片,切开部分进行分析处理。

基本用法

awk[选项参数] 'pattern1{action1} pattern2{action2}……' filename

pattern:表示awk在数据中查找的内容,采用正则匹配的方式
action:找到匹配的内容后,执行一系列的命令

选项参数说明

-F:指定输入文件的分隔符
-v:赋值一个用户定义变量

awk的内置变量

FILENAME:文件名
NR:已读记录数,可以理解为行号
NF:浏览记录域的个数,即切割后列的个数,可以理解为列号

例子

# 数据准备
[root@localhost opt]# cp /etc/passwd ./
# 查找passwd文件中,以root关键字开头的所有行,输出该行的第7列
[root@localhost opt]# awk -F : '/^root/ {print $7}' passwd
/bin/bash
# 查找passwd文件中,以root关键字开头的所有行,输出该行第1列和第7列,以“,”分隔
[root@localhost opt]# awk -F : '/^root/ {print $1","$7}' passwd
root,/bin/bash
# 显示passwd的第一列和第七列,以逗号分隔,在所有行前加‘begin’,在最后加‘end’
[root@localhost opt]# awk -F : 'BEGIN{print "beign"} {print $1","$7} END{print "end"}' passwd
beign
root,/bin/bash
bin,/sbin/nologin
daemon,/sbin/nologin
adm,/sbin/nologin
lp,/sbin/nologin
sync,/bin/sync
shutdown,/sbin/shutdown
halt,/sbin/halt
mail,/sbin/nologin
operator,/sbin/nologin
games,/sbin/nologin
ftp,/sbin/nologin
nobody,/sbin/nologin
systemd-network,/sbin/nologin
dbus,/sbin/nologin
polkitd,/sbin/nologin
sshd,/sbin/nologin
postfix,/sbin/nologin
chrony,/sbin/nologin
end
# 将passwd的第三列都加1
[root@localhost opt]# awk -F : -v i=1 '{print $3+i}' passwd
1
2
3
4
5
6
7
8
9
12
13
15
100
193
82
1000
75
90
999
# 统计passwd中,每行的行号和每列的列数
[root@localhost opt]# awk -F: '{print "filename:"  FILENAME ", linenumber:" NR  ",columns:" NF}' passwd
filename:passwd, linenumber:1,columns:7
filename:passwd, linenumber:2,columns:7
filename:passwd, linenumber:3,columns:7
filename:passwd, linenumber:4,columns:7
filename:passwd, linenumber:5,columns:7
filename:passwd, linenumber:6,columns:7
filename:passwd, linenumber:7,columns:7
filename:passwd, linenumber:8,columns:7
filename:passwd, linenumber:9,columns:7
filename:passwd, linenumber:10,columns:7
filename:passwd, linenumber:11,columns:7
filename:passwd, linenumber:12,columns:7
filename:passwd, linenumber:13,columns:7
filename:passwd, linenumber:14,columns:7
filename:passwd, linenumber:15,columns:7
filename:passwd, linenumber:16,columns:7
filename:passwd, linenumber:17,columns:7
filename:passwd, linenumber:18,columns:7
filename:passwd, linenumber:19,columns:7

sort

将文件进行排序,将排序结果进行标准输出。

基本语法

sort(选项)(参数)

选项参数说明

-n:按照数字大小排序
-r:按照相反顺序排序
-t:设置排序时候的分隔符
-k:指定需要排序的列

例子

# 准备数据
a:5:3
b:2:4
c:1:2
# 对demo.txt以“:”分隔,按照第三列倒序排列
[root@localhost opt]# sort -t : -nrk 3 demo.txt
b:2:4
a:5:3
c:1:2
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值