Shell工具的使用:cut、sort、awk、sed
cut
cut命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出
-
cut [选项参数] filename
-
功能 | |
---|---|
-f | 列号,提取几列 |
-d |
实际操作:
1. 数据准备:
dong guan
wo ai
liu yan fang
he chang hang
guo qing hui lai
kan ni deng wo
lao po
2. 切割cut第一列
cut -d " " -f 1 cut.txt # -d 表示用什么分割,这里是" "空格 # -f 表示切割第几列,这里是第一列
3.
cat cut.txt | grep guo | cut -d " " -f 1
4. 切割ifconfig后打印的IP地址
ifconfig ens33 | grep "inet" | cut -d : -f 2 | cut -d " " -f 1
sed
-
-
把当前行存储在临时缓冲区中,称为模式空间
-
1. 基本用法
sed [选项参数] ‘command’ filename
2. 选项参数说明
选项参数 | 功能 |
---|---|
-e |
3. 命令功能描述
命令 | 功能描述 |
---|---|
a | 新增,a的后面可以接字符串,在下一行出现 |
d | 删除 |
s |
4. 实际操作
4.1 数据准备
dong shen
guan zhen
wo lai
le le
4.2
sed "2a mei nv" sed.txt # 2a 在第2行下面插入mei nv 插入到sed.txt文件中
4.3 删除sed.txt文件所有包含wo的行
sed "/wo/d" sed.txt # 将包含wo的一行删除 /d:删除的意思
4.4 将sed文件中wo替换位ni
sed "s/wo/ni/g" sed.txt # s: 开始 /g: 全局
4.5 将sed文件中的第二行删除并将wo替换为ni
sed -e "2d" -e "s/wo/ni/g" sed.txt # -e 表示连续执行
awk
-
-
文件逐行读入
-
基本语法:
awk [选项参数] ‘pattern {action1} pattern2{pattern2} ...’ filename
-
pattern:表示AWK在数据中查找的内容,就是匹配模式
-
action:在找到匹配内容时所执行的一系列命令
选项参数 | 功能 |
---|---|
-F | 指定输入文件折分隔符 |
-v |
实际操作:
sudo cp /etc/passwd ./ # 搜索passwd文件以root开头的所有行,并输出改行的第7列 awk -F: '/^root/ {print $7}' passwd # 以root开头,$7 是第7行,以 : 切分 # 搜索passwd文件以root关键字开头的所有行,并输出该行的第一列和第七列,中间以“,”分割 awk -F: '/^root/ {print $1","$7}' passwd # 只显示/etc/passwd的第一列和第七列,以逗号分割,且在所有行的前面添加列名user,shell在最后一行添加“joey” awk -F : 'BEGIN{print "user,shell"} {print $1","$7} END{print "joey"}' passwd #将passwd文件中的用户id增加数值1并输出 awk -F : -v i=1 '{print $3+i}' passwd
awk内置变量:
说明 | |
---|---|
Filename | 文件名 |
NR | 已读的记录数 |
NF |
sort
参数说明:
选项 | 说明 |
---|---|
-n | 依照数值的大小进行排序 |
-r | 相反的顺序排序 |
-t | 设置排序时所需的分割字符 |
-k |
实操:
# 按照“:”分割后的第三列倒序排序 sort -t : -nrk 3 sort.sh