cut
cut 的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。
cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。
其实可以看做grep是筛选行,cut是筛选列
基本用法
cut [选项参数] filename- 说明:默认分隔符是制表符
选项参数说明

vim cut.txt
dong shen
guan zhen
wo wo
lai lai
le le
练习
- 切割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}...’ filenamepattern:表示awk 在数据中查找的内容,就是匹配模式action:在找到匹配内容时所执行的一系列命令
选项参数说明

cp /etc/passwd ./
- 搜索passwd 文件以root 关键字开头的所有行,并输出该行的第7 列。
# cut实现
cat passwd |grep ^root |cut -d ":" -f 7
/bin/bash
cat passwd |awk -F : '/^root/{print $7}'
/bin/bash
- 搜索passwd 文件以root 关键字开头的所有行,并输出该行的第1 列和第7 列,中间以“,”号分割。
cat passwd |awk -F : '/^root/{print $1","$7}'
root,/bin/bash
注意:只有匹配了pattern 的行才会执行action。
- 只显示/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 在所有数据执行之后执行。
- 将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 的内置变量

- 统计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}'


2608

被折叠的 条评论
为什么被折叠?



