1. 总结学过的文本处理工具,文件查找工具,文本处理三剑客, 文本格式化命令(printf)的相关命令及选项,示例。
文本处理工具
cat:
cat [OPTION]... [FILE]...
-E:显示行结束符$
-A:显示所有控制符
-n:对显示出的每一行进行编号
-b:非空行编号
-s:压缩连续的空行成一行
分页查看文件内容
more more [OPTIONS...] FILE... -d: 显示翻页及退出提示 less /文本 搜索 文本 n/N 跳到下一个 或 上一个匹配
显示文本前面或后面的行内容
head [OPTION]... [FILE]... -c # 指定获取前#字节 -n # 指定获取前#行,#如果为负数,表示从文件头取到倒数第#前 -# 同上 tail [OPTION]... [FILE]... -c # 指定获取后#字节 -n # 指定获取后#行,如果#是负数,表示从第#行开始到文件结束 -# 同上 -f 跟踪显示文件fd新追加的内容,常用日志监控,相当于 --follow=descriptor,当文件删除再新 建同名文件,将无法继续跟踪文件 -F 跟踪文件名,相当于--follow=name --retry,当文件删除再新建同名文件,将可以继续跟踪文 件 tailf 类似 tail –f,当文件不增长时并不访问文件,节约资源,CentOS8已经无此工具
按列抽取文本cut
cut [OPTION]... [FILE]... -d DELIMITER: 指明分隔符,默认tab -f FILEDS: #: 第#个字段,例如:3 #,#[,#]:离散的多个字段,例如:1,3,6 #-#:连续的多个字段, 例如:1-6 混合使用:1-3,7 -c 按字符切割 --output-delimiter=STRING指定输出分隔符
合并多个文件paste
paste [OPTION]... [FILE]... -d #分隔符:指定分隔符,默认用TAB -s #所有行合成一行显示
分析文本的工具
文本数据统计:wc 整理文本:sort 比较文件:diff和patch
收集文本统计数据 wc
wc 命令可用于统计文件的行总数、单词总数、字节总数和字符总数 可以对文件或STDIN中的数据统计 -l 只计数行数 -w 只计数单词总数 -c 只计数字节总数 -m 只计数字符总数 -L 显示文件中最长行的长度
文本排序 sort
把整理过的文本显示在STDOUT,不改变原始文件 sort [options] file(s) -r 执行反方向(由上至下)整理 -R 随机排序 -n 执行按数字大小整理 -h 人类可读排序,如: 2K 1G -f 选项忽略(fold)字符串中的字符大小写 -u 选项(独特,unique),合并重复项,即去重 -t c 选项使用c做为字段界定符 -k # 选项按照使用c字符分隔的 # 列来整理能够使用多次
去重uniq
uniq命令从输入中删除前后相接的重复的行 uniq [OPTION]... [FILE]... -c: 显示每行重复出现的次数 -d: 仅显示重复过的行 -u: 仅显示不曾重复的行
比较文件
diff 命令比较两个文件之间的区别 -u 选项来输出“统一的(unified)”diff格式文件,最适用于补丁文件
patch
patch 复制在其它文件中进行的改变(要谨慎使用) -b 选项来自动备份改变了的文件
vimdiff
相当于 vim -d
文本处理三剑客之 grep
grep [OPTIONS] PATTERN [FILE...] --color=auto 对匹配到的文本着色显示 -m # 匹配#次后停止 -v 显示不被pattern匹配到的行,即取反 -i 忽略字符大小写 -n 显示匹配的行号 -c 统计匹配的行数 -o 仅显示匹配到的字符串 -q 静默模式,不输出任何信息 -A # after, 后#行 -B # before, 前#行 -C # context, 前后各#行 -e 实现多个选项间的逻辑or关系,如:grep –e ‘cat ' -e ‘dog' file -w 匹配整个单词 -E 使用ERE,相当于egrep -F 不支持正则表达式,相当于fgrep -P 支持Perl格式的正则表达式 -f file 根据模式文件处理 -r 递归目录,但不处理软链接 -R 递归目录,但处理软链接
文本处理三剑客之 sed
sed [option]... 'script;script;...' [inputfile...] -n 不输出模式空间内容到屏幕,即不自动打印 -e 多点编辑 -f FILE 从指定文件中读取编辑脚本 -r, -E 使用扩展正则表达式 -i.bak 备份文件并原处编辑 -s 将多个文件视为独立文件,而不是单个连续的长文件流 #说明: -ir 不支持 -i -r 支持 -ri 支持 -ni 危险选项,会清空文件
sed 高级用法
P 打印模式空间开端至\n内容,并追加到默认输出之前 h 把模式空间中的内容覆盖至保持空间中 H 把模式空间中的内容追加至保持空间中 g 从保持空间取出数据覆盖至模式空间 G 从保持空间取出内容追加至模式空间 x 把模式空间中的内容与保持空间中的内容进行互换 n 读取匹配到的行的下一行覆盖至模式空间 N 读取匹配到的行的下一行追加至模式空间 d 删除模式空间中的行 D 如果模式空间包含换行符,则删除直到第一个换行符的模式空间中的文本,并不会读取新的输入行,而使用合成的模式空间重新启动循环。如果模式空间不包含换行符,则会像发出d命令那样启动正常的新循环
文本处理三剑客之 awk
格式:
格式符:与item一一对应
2. 总结文本处理的grep命令相关的基本正则和扩展正则表达式。
基本正则表达式
通配符
匹配次数
位置锚定
分组
或者
扩展正则表达式
通配符
次数匹配
位置锚定
分组其他
3. 总结变量命名规则,不同类型变量(环境变量,位置变量,只读变量,局部变量,状态变量)如何使用。
变量命名规则:
命名要求:
命名习惯:
变量定义和引用:
变量赋值:
变量引用:
不同类型变量的使用方法:
环境变量:
变量引用:
只读变量:
位置变量:
4. 通过shell编程完成,30鸡和兔的头,80鸡和兔的脚,分别有几只鸡,几只兔?
5. 结合编程的for循环,条件测试,条件组合,完成批量创建100个用户,
1)for遍历1..100
2)先id判断是否存在
3)用户存在则说明存在,用户不存在则添加用户并说明已添加。
6. 磁盘存储术语总结: head, track, sector, sylinder.
1. Head(磁头):磁盘驱动器上的读写装置,用于在磁盘表面上读取和写入数据。通常,每个盘片上都有一个磁头,而多盘片的磁盘驱动器会有多个磁头。
2. Track(磁道):磁盘表面上的一个圆形轨道,由磁头沿着其半径运动以读取或写入数据。磁道通常被划分为多个扇区。
3. Sector(扇区):磁道上的一个小的数据存储单元,通常是一个物理数据块的最小单元。扇区是磁盘上的最小可寻址存储单位,通常为512字节或4KB。
4. Cylinder(柱面):多个磁道在多个盘片上相同位置的集合,形成一个立体的圆柱状区域。磁盘驱动器的磁头会同时移动到同一柱面上的不同磁道以提高读写效率。
7. 总结MBR,GPT结构。
MBR:
1. 分区表格式:MBR使用传统的分区表格式,它将硬盘分成四个主要分区,或者使用扩展分区来支持更多分区,但存在一些限制。
2. 引导信息:MBR中的第一个扇区(512字节)用于存储引导代码和分区表。这个引导代码通常由操作系统的引导加载程序占用。
3. 兼容性:MBR在旧的计算机系统上广泛使用,但存在一些限制,如每个磁盘最多支持四个主分区,或者三个主分区和一个扩展分区。
GPT:
1. 分区表格式:GPT使用一种更现代的分区表格式,它能够支持更大的硬盘容量,并允许更多分区。它不受主分区和扩展分区的限制。
2. 引导信息:GPT的引导信息存储在硬盘的起始和结尾部分,而不像MBR放在第一个扇区,这提高了数据安全性。
3. 兼容性:GPT适用于新一代计算机系统,特别是支持UEFI(统一可扩展固件接口)的系统。它不受MBR的容量和分区数限制。
8. 总结学过的分区,文件系统管理,SWAP管理相关的命令及选项,示例
fdisk, parted, mkfs, tune2fs, xfs_info, fsck, mount, umount, swapon, swapoff
1.fdisk:用于分区管理的命令。
-l:列出磁盘上的分区。
示例:fdisk -l /dev/sda
2.parted:用于分区管理的命令,提供更多高级选项。
mklabel:创建新的分区表。
示例:parted /dev/sda mklabel gpt
3.mkfs:用于创建文件系统。
-t:指定文件系统类型(如ext4、xfs等)
示例:mkfs -t ext4 /dev/sda1
4.tune2fs:用于调整ext文件系统的参数
-L:设置卷标。
示例:tune2fs -L mylabel /dev/sda1
5.xfs_info:用于获取XFS文件系统的信息。
无选项,直接运行以查看文件系统信息。
示例:xfs_info /dev/sda1
6.fsck:用于检查和修复文件系统错误。
-a:自动修复错误。
示例:fsck -a /dev/sda1
7.mount:用于挂载文件系统。
-t:指定文件系统类型。
示例:mount -t ext4 /dev/sda1 /mnt/mydata
8.umount:用于卸载已挂载的文件系统。
示例:umount /mnt/mydata
9.swapon:用于启用交换分区。
示例:swapon /dev/sdb1
10.swapoff:用于禁用交换分区。
示例:swapoff /dev/sdb1