关于shell和文本处理
shell脚本
??在正常生产环境中,肯定会有一些重复而简单的工作,那么这个时候我们就可以利用一些小脚本来完成这些工作,那就是shell了。shell的用途就是自动化常用命令,执行系统管理和腹胀排错,处理文件或文本;格式要求,由于现在用的shell是bash,所以在脚本开始第一行要求格式就是 ?? ??短路与 只要有一个cmd是假的 那么结果就是假的,用 ??还有一些比较数值大小的需要用到数值测试: ??关于 ??和cat一样的还有tac和rev,但是并没有cat那么常用。tac 整行反向显示文本 ; rev 整列反向显示文本。 那么就来grep了?? ??作用:文本搜索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行 ??模式:由正则表达式字符及文本字符所编写的过滤条件 ?? ???? ???? ???? ???? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ?????? ???????? ?????? ?????? ?????? ?????? 基本正则表达式元字符??字符匹配: ????. 匹配任意单个字符 ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ???? ??匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数 ???? ????贪婪模式:尽可能长的匹配 ???? ???? ???? ???? ???? ???? ???? ??位置锚定:定位出现的位置 ???? ???? ???? ???? ???? ???? ???? ???? ??在正则表达式中,.表示任意一个字符; 关于head和tail的一些选项?? ???? ???? ???? ?? ???? ???? ???? ???? ???? 关于cut?? ???? ???? ???? ???? ???? 关于wc????计数单词总数、行总数、字节总数和字符总数 ????可以对文件或STDIN中的数据运行 ????wc story.txt ????39??237??1901 story.txt ????行数??字数??字节数 ????常用选项 ?????? ?????? ?????? ?????? ?????? sort????把整理过的文本显示在STDOUT,不改变原始文件 ???? ????常用选项 ?????? ?????? ?????? ?????? ?????? ?????? ?????? uniq???? ???? ?????? ?????? ?????? ????常和sort 命令一起配合使用: ?????? ??uniq 默认作用合并相邻的重复行;=sort -u 合并相邻的重复行; 文件的查找与压缩find??find是实时查找工具,通过遍历指定路径完成文件查找,工作特点:查找速度略慢;精确查找;实时查找; 可能只搜索用户具备读取和执行权限的目录,它的语法是 ??find [OPTION]... [查找路径] [查找条件] [处理动作] ??查找路径:指定具体目标路径;默认为当前目录 ??查找条件:指定的查找标准,可以文件名、大小、类型、权限等标准进行; ??默认为找出指定路径下的所有文件 ??处理动作:对符合条件的文件做操作,默认输出至屏幕 ??搜索层级: ????-maxdepth level 最大搜索目录深度,指定目录为第1级 ????-mindepth level 最小搜索目录深度 ??先处理目录内的文件,再处理目录 ??根据文件名和inode查找: ????-name "文件名称":支持使用glob-name "文件名称":支持使用glob ????-iname "文件名称":不区分字母大小写 ????-inum n 按inode号查找 ????-samefile name 相同inode号的文件 ????-links n 链接数为n的文件 ????-regex “PATTERN”:以PATTERN匹配整个文件路径,而非文件名称 ??根据属主、属组查找: ????-user USERNAME:查找属主为指定用户(UID)的文件 ????-group GRPNAME: 查找属组为指定组(GID)的文件 ????-uid UserID:查找属主为指定的UID号的文件 ????-gid GroupID:查找属组为指定的GID号的文件 ????-nouser:查找没有属主的文件 ????-nogroup:查找没有属组的文件 ??根据文件类型查找 ???? -type TYPE ??????? f: 普通文件 ??????? d: 目录文件 ??????? l: 符号链接文件 ??????? s:套接字文件 ??????? b: 块设备文件 ??????? c: 字符设备文件 ??????? p: 管道文件 ??空文件或目录 ????-empty ??????find /app -type d -empty ??根据文件大小来查找: ????-size [+|-]#UNIT ????常用单位:k,M,G,c(byte) ????#UNIT: (#-1,#] ??????如:6k 表示(5k,6k] ????-#UNIT:[0,#-1] ??????如:-6k 表示[0,5k] ????+#UNIT:(#,∞) ??????如:+6k 表示(6k,∞) ??根据时间戳: ????以“天”为单位 ????-atime [+|-]#, ????#: [#,#+1) ????+#: [#+1,∞] ????-#: [0,#) ??????-mtime ??????-ctime ????以“分钟”为单位 ??????-amin ??????-mmin ??????-cmin ??根据权限查找: ??-perm [/|-]MODE ????MODE: 精确权限匹配 ????/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可,或关系,+ ????从centos7开始淘汰 ????-MODE:每一类对象都必须同时拥有指定权限,与关系 ??????0 表示不关注 ??????find -perm 755 会匹配权限模式恰好是755的文件 ??????只要当任意人有写权限时,find -perm +222就会匹配 ??????只有当每个人都有写权限时,find -perm -222才会匹配 ??????只有当其它人(other)有写权限时,find -perm -002才会匹配 ??处理动作-print:默认的处理动作,显示至屏幕 ????-ls:类似于对查找到的文件执行“ls -l”命令 ????-delete:删除查找到的文件 ????-fls file:查找到的所有文件的长格式信息保存至指定文件中 ????-ok COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认 ????-exec COMMAND {} ; 对查找到的每个文件执行由COMMAND指定的命令 ????{}: 用于引用查找到的文件名称自身 ????find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性 xargs??参数替换xargs ????由于很多命令不支持管道|来传递参数,而日常工作中有这个必要,所以就有了 ????xargs用于产生某个命令的参数,xargs 可以读入 stdin 的数据,并且以空格符 ????示例: ??????ls f* |xargs rm ??????find /sbin/ -perm +700 |ls -l 这个命令是错误的 ??????find /bin/ -perm /7000 | xargs ls -l 查找有特殊权限的文件 ??????find /bin/ -perm -7000 | xargs ls -l 此命令和上面有何区别? ??????find和xargs格式:find | xargs COMMAND gzip gunzip??通常我们在网络上面上传或者下载一个比较大的文件时,会对文件或者文件夹进行打包压缩处理以便更快速的工作效率,我们会使用一下小工具来对文件或者文件夹进行打包压缩和解压缩。 ??gzip [OPTION]... FILE ... ????-d 解压缩,相当于gunzip ????-c 结果输出至标准输出,保留原文件不改变 ????-# 指定压缩比,#取值为1-9,值越大压缩比越大 ??gunzip file.gz 解压缩 ????zcat file.gz 不显式解压缩的前提下查看文本文件内容 ????示例: ??????gzip -c messages >messages.gz ??????gzip -c -d messages.gz > messages ??????zcat messages.gz > messages ??????cat messages | gzip > m.gz tar??(1) 创建归档 ???? tar -cpvf /PATH/FILE.tar FILE... ??(2) 追加文件至归档: 注:不支持对压缩文件追加 ???? tar -r -f /PATH/FILE.tar FILE... ??(3) 查看归档文件中的文件列表 ????tar -t -f /PATH/FILE.tar ??(4) 展开归档 ????tar -x -f /PATH/FILE.tar ????tar -x -f /PATH/FILE.tar -C /PATH/ ??(5) 结合压缩工具实现:归档并压缩 ????-j: bzip2,-z: gzip,-J: xz ??-exclude 排除文件 ????tar zcvf /root/a3.tgz --exclude=/app/host1 --exclude=/app/host2 /app ????-T 选项指定输入文件 ???? -X 选项指定包含要排除的文件列表 ??????tar zcvf mybackup.tgz -T /root/includefilelist -X /root/excludefilelist ??split:分割一个文件为多个文件,例如分割大的 tar 文件为多份小文件 ????split -b Size –d tar-file-name prefix-name ????split -b 1M –d mybackup.tgz mybackup-parts ????split -b 1M mybackup.tgz mybackup-parts ??合并: ????cat mybackup-parts* > mybackup.tar.gz ??本期呢差不多就是这写内容,简单实用,如果想全部学会还是需要一些精力的。加油! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |