7月18日上课内容 第四章 针对文件内容操作

本节课我们主要学习的是针对文件内容的操作

针对文件的内容进行匹配或者过滤

排序

grep 过滤 针对文本的内容进行过滤,也就是查找

grep -i 忽略大小写,默认的,可以不加

        -n 显示匹配的行号 (既显示内容,也显示内容所在的行数)

        -c 只统计匹配的行数

        -v:取反,你要找的我不显示

grep的主要作用就是过滤文本内容,是针对行来进行处理。

        -m  1 多个匹配的话,可以限定显示匹配的行数(只显示几行),匹配几次之后停止。

        -o   仅显示匹配到的字符串

        -q   静默模式,什么都不输出(匹配到了结果,但是不显示)一般不用,了解即可

        -A  2 " "  after 表示匹配到内容行后,再向下展示几行。包含匹配到的的行,就是匹配当前行和当前行上面两行 

        -B  2 " " before  匹配到当前行以及当前行的前几行

        -C  2 " " 匹配到自己所在的行,以及上下各几行。               

        -e:逻辑或,可以匹配多个条件,实现多个选项间的逻辑关系,可以跟多个条件。

- w 匹配整个单词

- E 扩展正则表达式 egrep 都是可以使用扩展正则表达式

-f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容

-r 递归目录,不处理软连接

-R 递归目录,处理软连接(递归目录下所有的文件的内容)

题1:显示所有不以#开头的行(^表示以什么为开头,$表示以什么为结尾,要用引号引起来)

sort:以行为单位,对文件的内容进行排序。也可以根据不同的数据类型进行排序

排序

格式:

sort 选项 参数

cat 文件名 | sort 选项

常用的选项:

-f 忽略大小写,默认会把大写的字母排在前面

-b 忽略每行前面的空格

-n 按照数字进行排序

-r 反向排序(很少用,了解即可)

-u 相同的数据,只显示一行,去重

-o 输出的文件名:将排序后的结果转存到指定的文件

注意:数字和字母不要混合在一起排序

示例:

顺序混乱,那么能不能按照原文本的顺序,输入到ky30里面去呢?

以上都是根据文本内容排序,不是文件名

去重的命令:

uniq 用于报告或者忽略文件中连续出现的重复行,经常与sort命令结合使用

tr命令

tr 用于对来自标准输入的字符进行替换 压缩和删除

命令格式:

tr 选项 参数

| 也可以结合管道符使用

常用的选项:

-c 保留字符集1的字符,用字符集2来替换

没加 就是替换

A-Z用引号引起来都是表示正则

就是匹配前面输出的内容,把所有的大写字母都换成小写字母,标准写法

例:把ab保留,替换c成t。

echo abc | tr -c "ab" ''t"

echo abc | tr -d "ab"

删除ab,保留c

-d 删除指定的字符集

-s 把重复出现的字符串压缩成一个字符串,也可以替换

例:

变:把连续多个空格压缩成一个空格用\n:换行空格

例:echo $PATH以:作为分隔,把它替换成换行(/n)

-t 默认就是替换,可以不写        

tr 就是把不想要的部分,删除掉

tr -t = tr

主要作用就是替换和删除

cut:截取,和awk有相似之处

对字段进行截取和裁剪

格式:

cut 选项 参数

cat 文件名 | cut 选项

-d  指定分隔符,默认分隔符是tab,不是空格

awk的默认分割符是空格,多个空格也会算一个

-f 按字段进行截取,指定要截取第几个字段 1-3,1到3  1,3  1和3

-b 以字节为单位截取

-c 以字符为单位截取(用的比较少,了解即可)

-complement:删除指定的字段

-output-delimiter:更改输出内容的分隔符(一般不用)

例:cut -d ":" -f 1-3 /etc/passwd 指定分隔符并截取1-3行(用得上,一定要会)

1,3:截取第1行和第3行

删除指定字段:

更换指定的分隔符():

split 文件拆分(面试题,面试会问)

把大文件拆分成若干小文件

-l 指定行数拆分 line 

-b 指定文件大小拆分 block

split -l 20 passwd ky30(指定20行拆一个,指定拆分之后的文件名为ky30)

注:一般来说我们都会在拆分后自定义一个名称,方便识别。

指定大小:(把一个6.3M的文件拆分一下,同样自定义一个划分后的名称)

2M一个,剩下的只能单独的再切一个

paste 文件合并(也是一个面试题,必会)

paste a b 和 cat a b 之间的区别

不加重定向输出,就是临时展示。

paste是左右合并

cat是上下合并

这只是展示,不生效

永久生效:要用重定向输出符,把它重定向到文件里面

两个面试题(笔试题)

1、

统计当前主机的连接状态

listen 监听,等待连接/谁可以连接

estab 已经建立连接,连接处在活动状态

netstat -antp

ss -antp 都可以统计连接状态

只取出监听状态那一行:

netstat

ss -antp:

ss -antp | grep -v "^State" | cut -d " " -f 1 | sort | uniq -c

过滤掉所有不是State开头的列 | 然后取第一列 | 统计 | 统计重复的次数

                                                        排序 连续重复的排一块 统计

2、统计当前主机的连接数

ss -ap 统计当前连接的主机

ss -at | tr -s "  " | cut -d "  " -f 4 | sort -n | uniq -c 

先把多个空格压缩成一个 然后再cut把local那一列切出来 然后排序 统计

重点总结:

本章全都是针对文本内容进行的操作

1、grep 过滤

2、sort 排序

按照原文本的顺序输入到ky30.txt里面

cat -n /etc/passwd | sort -n -o ky30.txt

3、uniq 去重

4、tr 对字符串或者字符集进行替换,压缩和删除

把连续多个空格压缩成一个空格用\n:换行空格

sort -n test.sh | tr -s "\n"

改echo $PATH以:作为分隔,把它替换成换行(\n)

ECHO $PATH | tr -s ":"  "\n"

5、cut 截取

cut -d " :"  -f 1-3  1,3 /etc/passwd

-d:指定分隔符

-f 指定切几列

1-3 1到3列        1,3 1和3列

6、split 文件拆分(面试题)

-l 指定行数来拆 line

-b 指定文件大小列来拆 block 

不要忘了接上自定义的文件名

split -l 20 passwd wx

7、paste 文件合并

paste a b 和 cat a b 的区别(面试题) 

paste是左右合并

cut是上下合并

8、统计当前主机的连接状态(面试题1)

状态:listen 监听,等待连接,谁可以连接

estab 已经建立连接,连接处在活动状态

netstat -antp | awk 'NR>2 {print $6}' | sort | uniq -c

ss -antp | grep -v "^State" | cut -d " " -f 1 | sort | uniq -c

9、统计当前主机的连接数(面试题2)

ss -nt | tr -s " " | cut -d " " -f 4 | sort | uniq -c

红字为必须要会的内容

netstat -nt

grep过滤选项:

 -i 忽略大小写,默认的,可以不加

        -n 显示匹配的行号 (既显示内容,也显示内容所在的行数)

        -c 只统计匹配的行数

-v:取反,你要找的我不显示

grep的主要作用就是过滤文本内容,是针对行来进行处理。

        -m  1 多个匹配的话,可以限定显示匹配的行数(只显示几行),匹配几次之后停止。

        -o   仅显示匹配到的字符串

        -q   静默模式,什么都不输出(匹配到了结果,但是不显示)一般不用,了解即可

        -A  2 " "  after 表示匹配到内容行后,再向下展示几行。包含匹配到的的行,就是匹配当前行和当前行上面两行 

        -B  2 " " before  匹配到当前行以及当前行的前几行

        -C  2 " " 匹配到自己所在的行,以及上下各几行。               

        -e:逻辑或,可以匹配多个条件,实现多个选项间的逻辑关系,可以跟多个条件。

- w 匹配整个单词

- E 扩展正则表达式 egrep 都是可以使用扩展正则表达式

-f 根据两个文件的内容进行匹配,匹配两个文件中相同的内容

-r 递归目录,不处理软连接

-R 递归目录,处理软连接(递归目录下所有的文件的内容)

 显示所有不以#开头的行(^表示以什么为开头,$表示以什么为结尾,要用引号引起来)

sort:以行为单位,对文件的内容进行排序。也可以根据不同的数据类型进行排序

排序

格式:

sort 选项 参数

cat 文件名 | sort 选项

常用的选项:

-f 忽略大小写,默认会把大写的字母排在前面

-b 忽略每行前面的空格

-n 按照数字进行排序

-r 反向排序(很少用,了解即可)

-u 相同的数据,只显示一行,去重

-o 输出的文件名:将排序后的结果转存到指定的文件

注意:数字和字母不要混合在一起排序

顺序混乱,那么能不能按照原文本的顺序,输入到ky30里面去呢?

cat -n /etc/passwd | sort -n -o ky30.txt

命令格式:

uniq 选项 参数

cat 文件名 | uniq 选项

-c 统计连续重复的行的次数,并且合并重复的行,并打印,不会改变文件的内容

-u 显示仅出现一次的行,包括不连续的重复行

-d 仅显示重复出现的行,必须是连续的重复行

排序之后,会把不连续重复的行默认排在一块,再用uniq -c去重统计,统计重复出现了几次

tr命令

tr 用于对来自标准输入的字符进行替换 压缩和删除

命令格式:

tr 选项 参数

| 也可以结合管道符使用

常用的选项:

-c 保留字符集1的字符,用字符集2来替换

没加 就是替换

A-Z用引号引起来都是表示正则

就是匹配前面输出的内容,把所有的大写字母都换成小写字母,标准写法

例:把ab保留,替换c成t。

echo abc | tr -c "ab" ''t"

echo abc | tr -d "ab"   删除ab,保留c

-d 删除指定的字符集

-s 把重复出现的字符串压缩成一个字符串,也可以替换

变:把连续多个空格压缩成一个空格用\n:换行空格

sort -n test.sh | tr -s "\n"

例:echo $PATH以:作为分隔,把它替换成换行(\n)

ECHO $PATH | tr -s ":"  "\n"

-t 默认就是替换,可以不写        

tr 就是把不想要的部分,删除掉

tr -t = tr

主要作用就是替换和删除

cut:截取,和awk有相似之处

对字段进行截取和裁剪

格式:

cut 选项 参数

cat 文件名 | cut 选项

-d  指定分隔符,默认分隔符是tab,不是空格

awk的默认分割符是空格,多个空格也会算一个

-f 按字段进行截取,指定要截取第几个字段 1-3,1到3  1,3  1和3

-b 以字节为单位截取

-c 以字符为单位截取(用的比较少,了解即可)

-complement:删除指定的字段

-output-delimiter:更改输出内容的分隔符(一般不用)

cut -d ":" -f 1-3 /etc/sswd 指定分隔符并截取1-3行(用得上,一定要会)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值