目录
一、常见系统特殊符号
(一)基础符号系列
1)美元符号 $
2)叹号符号 !
3)竖线符号 |
4)井号符号 #
(二)引号符号系列
(三)定向符号系列
(四)路径符号系列
(五)逻辑符号系列
二、常见通配符号
(一)通配符号作用
(二)通配符号企业应用
三、find(以文件为单位进行查找后删除复制移动)
三、正则符号
(一)正则符号作用说明
(二)正则表达符号分类
(三)正则符号注意事项
(四)基础正则符号说明
(五)扩展正则符号说明
(六)正则符号使用问题
(七)正则符号特性说明
五、grep(过滤筛选信息)
六、sed(修改替换文件内容 擅长对文件中的行进行操作)
1)概念介绍
2)sed命令的执行流程
3)sed命令实际应用
七、awk(擅长统计分析文件内容 擅长对文件中列进行操作)
1)概念介绍
2)awk命令执行过程
3)awk命令的实际应用
一、常见系统特殊符号
(一)基础符号系列
1)美元符号 $
1.用于取出变量中的内容 2.用于取出指定列的信息(awk) 3.表示用户命令提示符号 超级用户为 # 普通用户为 $
讯享网
2)叹号符号 !
讯享网1.用于表示取反或者排除意思 2.命令行中表示取出最近命令 !awk(慎用) history|grep awk 3.用于表示强制操作处理 vim底行模式保存 退出 wq! q!
3)竖线符号 |
1.表示管道符号,管道前面命令,交给管道后面执行 2.经常配合xargs命令使用 经常配合xargs命令使用 查找指定数据信息进行删除 find /test -type f -name "test*.txt"|xargs rm find /test -type f -name "test*.txt" -exec rm -rf {} \; find /test -type f -name "test*.txt" -delete 查找指定数据信息进行复制 find /test -type f -name "test*.txt" |xargs -i cp {} /test01/ find /test -type f -name "test*.txt" |xargs cp -t /test01/ find /test -type f -name "test*.txt" -exec cp -a {} /test01 \; 查找指定数据信息进行移动 find /test -type f -name "test*.txt" |xargs -i mv {} /test01/ find /test -type f -name "test*.txt" |xargs mv -t /test01/ find /test -type f -name "test*.txt" -exec mv {} /test01 \; 查找指定数据信息按照日期 --主要用于批量删除历史数据信息 查找7天以前的数据: find /test -type f -mtime +7 查找最近7天的数据: find /test -type f -mtime -7 查找距今第7天数据: find /test -type f -mtime 7
4)井号符号 #
讯享网1.表示文件内容注释符号 2.表示用户命令提示符号 超级用户为 # 普通用户为 $
(二)引号符号系列
1.美元括号: $() 表示命令执行结果留下,用于其他命令调用 2.引号符号: 双引号 "" 表示输入内容,就是输出内容,但是部分信息会被解析 单引号 '' 表示输入内容,就是输出内容(所见即所得) 反引号 `` 表示命令执行结果留下,用于其他命令调用
(三)定向符号系列
讯享网1.小于符号: 单个小于符号 < 标准输入重定向符号 两个小于符号 << 标准输入追加重定向符号 2.大于符号: 单个大于符号 >/2> 标准输出重定向符号 错误输出重定向符号 两个大于符号 >>/2>> 标准输出追加重定向符号 错误输出追加重定向符号
(四)路径符号系列
1.单点符号: . 表示当前目录 2.双点符号: .. 表示上级目录 3.波浪符号 ~ 表示用户家目录信息 超级用户:/root 普通用户:/home/用户名称
(五)逻辑符号系列
讯享网1.并且符号: && 表示前面的名称执行成功,再执行后面的命令 2.或者符号: || 表示前面的名称执行失败,再执行后面的命令
二、常见通配符号
作用说明:查找文件名称信息
使用场景:命令行经常使用
(一)通配符号作用
通配符号作用说明:方便匹配找出多个数据文件(按照文件名称进行匹配查找)
(二)通配符号企业应用
通配符号企业应用(wildcard) 1.星号:* 表示匹配所有内容信息 # 找出以什么结尾的文件信息 find /test -type f -name "*.txt" # 找出以什么开头的文件信息 find /test -type f -name "test*" 2.花括号:{} 表示生成序列信息 # 生成连续数字序列 echo {01..10} # 生成不连续数字序列 echo {01,03,05} # 生成连续字母序列 echo {a..d} # 生成不连续字母序列 echo {a,d,f,h} 表示生成组合序列 # 生成组合序列 echo A{A,B} # 生成组合序列 echo {A,B}{C,D} # 生成备份文件 cp oldboy.txt{,.bak}
三、find(以文件为单位进行查找后删除复制移动)
find:查找符合条件的文件
讯享网01、精确查找: find 路径信息 -type 文件类型 -name "文件名" 02、模糊查找: find 路径信息 -type 文件类型 -name "文件名*" find 路径信息 -type 文件类型 -name "*文件名" find 路径信息 -type 文件类型 -name "文*件名" 03、忽略字符大小写查找: find 路径信息 -type 文件类型 -iname "文件名*" 04、根据数据大小查找数据: find /test -type f -size +100 --找出大于100k的文件 find /test -type f -size -100 --找出小于100k的文件 find /test -type f -size +1M --找出大于1M的文件 `b' for 512-byte blocks (this is the default if no suffix is used) `c' for bytes (推荐) `w' for two-byte words `k' for Kilobytes (units of 1024 bytes) (推荐) `M' for Megabytes (units of bytes) (推荐) `G' for Gigabytes (units of bytes) 05、根据目录指定层级进行查找数据(进行递归查找): find /test -maxdepth 1 -type f -name "test*" 06、实际应用: 01. 如何找出/test/目录中.txt结尾的文件,将找出的文件进行统一删除 a find /test/ -maxdepth 1 -type f -name "*.txt" -delete b find /test/ -type f -name "*.txt" -exec rm -rf {} \; c find /test/ -type f -name "*.txt" | xargs rm -f d rm -rf $(find /test -type f -name "*.txt") e rm -f `find /test/ -type f -name "*.txt"` 02.如何找出/test/目录中.txt结尾的文件,将找出的文件进行批量复制/移动到/tmp目录中 find /test/ -maxdepth 1 -type f -name "*.txt" -exec cp {} /tmp \; find /test/ -maxdepth 1 -type f -name "*.txt" | xargs cp /tmp ---xargs其作用是将查找内容一列变为1行 补充: 1.查找指定数据信息进行删除 01.find /test -type f -name "test*.txt"|xargs rm 02.find /test -type f -name "test*.txt" -exec rm -rf {} \; 03.find /test -type f -name "test*.txt" -delete 2.查找指定数据信息进行复制 01.find /test -type f -name "test*.txt"|xargs -i cp {} /test01/ 02.find /test -type f -name "test*.txt"|xargs cp -t /test01/ 03.find /test -type f -name "test*.txt" -exec cp -a {} /test01 \; 3.查找指定数据信息进行移动 01.find /test -type f -name "test*.txt"|xargs -i mv {} /test01/ 02.find /test -type f -name "test*.txt"|xargs mv -t /test01/ 03.find /test -type f -name "test*.txt" -exec mv {} /test01 \; 4.查找指定数据信息按照日期(主要用于批量删除历史数据信息) 01.查找7天以前的数据:find /test -type f -mtime +7 02.查找最近7天的数据:find /test -type f -mtime -7 03.查找距今第7天数据:find /test -type f -mtime 7
三、正则符号
作用说明:查找文件内容信息
使用场景:三剑客命令常用/各种语言经常使用
(一)正则符号作用说明
方便匹配找出文件中的内容信息
(二)正则表达符号分类
1.基础正则表达式(basic regular expression) ^ $ . * [] [^] 2.扩展正则表达式(extended regular expression) | + () {} ?
(三)正则符号注意事项
讯享网①. 按照每行信息进行过滤处理 ②. 注意正则表达符号禁止中文 ③. 附上颜色信息进行正则过滤 --color=auto/--color
(四)基础正则符号说明
01.尖角符号:^ 表示以什么字符开头的一行信息 02.美元符号:$ 表示以什么字符结尾的一行信息 03.空行符号:^$ 表示过滤空行信息 04.点号符号:. 表示匹配任意一个且只有一个字符 grep -o "." test.txt -o:表示显示grep命令执行过程 05.星号符号:* 表示前一个字符出现0次或者多次 06.点星符号:.* 表示匹配文件中所有信息(包含空行) ^.*xxx 表示以任意字符开头xxx结尾(贪婪匹配) ^xxx.*xxx$ 表示以xxx开头,xxx结尾的所有行 07.转移符号:\ 表示还原字符的本来意思 '\.$' 表示查询出以点结尾的行信息 tr 源信息 替换后信息 <文件信息 表示对数据信息进行替换处理,采用一对一替换(sed命令的**版) 转移符号的常见用法汇总 \n 表示匹配一个换行符号 \r 表示匹配一个换行符号 \t 表示匹配一个制表符号 08.括号符号:[ ] 表示包含括号中信息的 [abc] 表示匹配包含a或b或c信息的字符 ^[abc] 表示匹配包含a或b或c信息的字符开头的信息 [a-zA-Z0-9] 找出所有以小写字母大写字母和数字信息的字符 [a-Z] 找出所有以小写字母或大写字母组成字符(只能grep/egrep使用) ^[a-z].*[.!]$ 表示以小写字母开头并且以点或叹号结尾的信息过滤出来 09.排除符号:[^] 表示排除括号中信息的 [^abc] 表示排除包含a或b或c信息的字符 ^[^abc] 表示排除包含a或b或c信息的字符开头的行(不包含空行)
(五)扩展正则符号说明
讯享网01.加号符号:+ 表示前一个字符连续出现了1次或多次以上 egrep "0+" file 表示取出数字0字符,以及连续的多个数字0字符 egrep "[a-z]+" file 表示取出文件中的所有连续的小写字母(其实是取出单词信息) 补充总结说明 一般加号符号经常是与中括号使用,可以匹配出多个不同的连续字符 02.竖线符号:| 表示匹配多个满足条件的信息(或者) 03.括号符号:() 表示匹配一个整体信息 egrep “oldb(o|e)y" file 表示过滤指定整体信息 表示用于后项引用前项 sed -r 's#(.*)#<\1>#g' 利用sed命令实现后项引用前项 sed -r 's#([0-9]+)#<\1>#g' 利用sed命令实现后项引用前项 sed -r 's#(..)(...)(..)#<\1><\2>#g' 利用sed命令实现后项引用前项 04.括号符号:{} 表示定义前面字符出现次数 x{n,m} 表示前一个字符至少连续出现n次,最多出现m次 x{n} 表示前一个字符正好连续出现了n次 x{n,} 表示前一个字符至少连续出现n次,最多出现多少次不限 x{,m} 表示前一个字符至少连续出现0次,最多出现m次 05.问号符号:? 表示定义前面字符出现0次或1次 PS:扩展正则符号 默认grep sed 命令不能直接识别 grep 提升自己 egrep/grep -E sed 提升自己 sed -r
(六)正则符号使用问题
①. 问题:尖角符号和星号符号区别? ^d和d* ②. 问题:星号符号匹配不存在信息? grep '' ③. 问题:过滤时是否使用引号区别? egrep [ab]{1,} oldboy.txt
(七)正则符号特性说明
讯享网①. 正则表达符号具有贪婪特性 ②扩展正则转换 基础正则方法. grep 'go\+d'
五、grep(过滤筛选信息)
grep参数介绍 -A after 在什么后面 -B before 在什么前面 -C centre 在什么中间 -c 统计信息出现的次数 grep命令如何进行过滤 1.筛选出有test的信息 grep "test" test.txt --从test.txt文件中筛选出有test的信息 2.筛选出有test的信息,但要有test信息的上一行信息也显示 grep -B 1 "test" test.txt 3.筛选出有test的信息,但要有test信息的下一行信息也显示 grep -A 1 "test" test.txt 4.筛选出有test的信息,但要有test信息的上一行和下一行信息也显示 grep -C 1 "test" test.txt 5.统计test信息在文件中出现了几次 grep -c 1 "test" test.txt
六、sed(修改替换文件内容 擅长对文件中的行进行操作)
1)概念介绍
讯享网官方概念:字符流过滤编辑和文本字符流转换工具 功能应用说明: 01.处理文本信息 文本文件信息(小文件) 日志文件信息(grep awk分析) 配置文件信息(sed) 02.处理文件方式 增加信息 删除信息 修改信息 查找信息
2)sed命令的执行流程

3)sed命令实际应用
命令语法格式: 标准格式:sed [选项] [sed指令] [文件信息] 举例说明:sed -i.bak 's#test#test01#g' test.txt sed命令参数信息: -n 取消默认输出 -r 识别扩展正则 -i 真实编辑文件(将内存中的信息覆盖到磁盘中) -e 识别sed命令多个操作指令 sed命令指令信息: p print 输出信息 i insert 插入信息,在指定信息前面插入新的信息 a append 附加信息,在指定信息后面附加新的信息 d delete 删除指定信息 s substitute 替换信息 sg(全局替换) c 替换修改指定的一整行信息 指令修饰:g PS:相同指令信息只能使用一次,想使用多次需要加上分号 1.sed查询信息 #01.根据文件内容的行号查询 sed -n '3p' person.txt --显示单行信息 sed -n '1,3p' person.txt --显示1-3行信息(连续) sed -n '1p;3p' person.txt --显示第1、第3共两行(不连续) #02.根据内容信息输出单行内容 sed -n '/test/p' person.txt --将含有test的行显示出来 sed -n '/test/,/Alex/p' person.txt --显示包含test到Alex行之间的所有行信息(连续) sed -n '/test/p;/Alex/p' person.txt --只显示包含test、Alex的行 2.sed命令增加信息(i:行前、a:行后) sed '1iHelloworld' test.txt --在文件最前面增加一行Helloworld sed '$abaibai' test.txt --在文件最后面增加一行baibai sed '3afour' test.txt --在第三行后面增加一行four sed '2itwo' test.txt --在第二行前面增加一行two sed -e '/test/iqian' -e '/test/ahou' test.txt --在包含test行的前天增加一行qian,后面增加一行hou sed '$a100\n101' test.txt --增加多行信息 企业中编写配置文件: IPaddress=10.10.10.1 mask=255.255.255.0 gateway=10.10.10.254 sed '$aIPaddress=10.10.10.1\nmask=255.255.255.0\ngateway=10.10.10.254' 文件名称 3.sed命令删除信息 sed '3d' test.txt --删除第3行(单行) sed '2,6d' test.txt --删除第2-6行(连续行) sed '3d;6d' test.txt --删除第3行和第6行 如何利用sed命令取消空行显示? sed -n '/./p' test.txt sed '/^$/d' test.txt sed -n '/^$/!p' test.txt 4.sed命令修改信息 vim 替换: :%s#one#two#g sed 's#要修改的内容#修改后的内容#g' test.txt sed 's#one#two#g' sed 's/#one/two/g' test.txt 后项引用前项进行替换修改 sed 's#()#\n#g' test.txt ip a s eth0|sed -rn '3s#^.*net(.*)/24.*#\1#gp' --取出IP地址 sed -i.bak 's#one#two#g' test.txt --修改文件内容并自动备份 PS:在真实替换文件内容时候,一定不能让n和i参数同时出现 ni和参数同时使用,会将文件内容进行清空 测验替换功能: 创建测试环境: -rw-r--r-- 1 root root 0 Jun 7 19:43 test00.txt -rw-r--r-- 1 root root 0 Jun 7 19:43 test01.txt -rw-r--r-- 1 root root 0 Jun 7 19:43 test02.txt -rw-r--r-- 1 root root 0 Jun 7 19:43 test03.txt 批量修改文件的扩展名称 将testxx.txt扩展名修改为testxx.jpg ls test*.txt|sed -r 's#(.*)txt#mv & \1jpg#g' mv test00.txt test00.jpg mv test01.txt test01.jpg mv test02.txt test02.jpg mv test03.txt test03.jpg 批量重命名专业命令: rename rename .txt .jpg test*.txt 命令 文件名称需要修改的部分信息 修改成什么信息 将什么样的文件进行修改
七、awk(擅长统计分析文件内容 擅长对文件中列进行操作)
1)概念介绍
讯享网处理文件信息: 1.文本文件信息 2.日志文件信息 3.配置文件信息 处理文件方式: 1. 排除信息 2. 查询信息 3. 统计信息 4. 替换信息 语法格式: sed [参数] '条件-处理方式' 文件 awk [选项] '模式{动作}' [文件信息] 内置变量 FS:field separator -F ":" == BEGIN{FS=":"} == -vFS=":" 字段分隔符变量 NR:number records --表示行号信息 NF:number of fields --表示每一行有多少列(默认表示总列数)
2)awk命令执行过程

3)awk命令的实际应用
一、awk的实际操作过程 测试环境: Zhang Dandan :250:100:175 Zhang Xiaoyu :155:90:201 Meng Feixue :250:60:50 Wu Waiwai :250:80:75 Liu Bingbing :250:100:175 Wang Xiaoai :50:95:135 Zi Gege :250:168:200 Li Youjiu :175:75:300 Lao Nanhai :250:100:175 1.awk查询信息 #01.按照行号查询 awk 'NR==2' test.txt --显示第2行信息 awk 'NR==2,NR==4' test.txt --显示第2-4行信息 awk 'NR==2;NR==4' test.txt --显示第2行和第4行信息 PS:在linux中 test=10 --赋值变量信息 test==10 --test等于10 #02.按照字符查询 awk '/one/' test.txt --显示含有字符one的行 awk '/one/,/three/' test.txt --显示含有字符one的行到含有three字符的行之间的所有行 awk '/one/;/three/' test.txt --显示含有字符one的行和含有字符three字符的行 显示xiaoyu的姓氏和ID号码 awk '/Xiaoyu/{print $1,$3}' test.txt 姓氏是zhang的人,显示他的第二次捐款金额及他的名字 awk '/Zhang/{print $NF}' test.txt|awk -F ":" '{print $3}' -F:指定分隔符 awk -F ":" '/^Zhang/{print $3}' test.txt awk -F "[ :]+" '/^Zhang/{print $1,$2,$(NF-1)}' test.txt --以空格和冒号为分隔符 #03.显示所有以41开头的ID号码的人的全名和ID号码 awk '$3~/^41/{print $1,$2,$3}' test.txt --找出第三列以41开头的所有行,输出该行的1,2,3列信息 #04. 显示所有ID号码最后一位数字是1或5的人的全名 方法一: awk '$3~/1$|5$/{print $1,$2}' test.txt|column -t column -t 以表格形式显示(整齐) 方法二: awk '$3~/[15]$/{print $1,$2}' awk_test.txt|column -t 方法三: awk '$3~/(1|5)$/{print $1,$2}' awk_test.txt|column -t 05. 显示Xiaoyu的捐款,每个捐款数值前面都有以$开头, 如$110$220$330 #gsub(/需要替换的信息/,"修改成什么信息",将哪列信息进行修改) awk '$2~/Xiaoyu/{gsub(/:/,"$",$NF);print $NF}' test.txt --找出第4列含有Xiaoyu的所有行,将最后一列的分隔符:替换为$并输出最后一列 文件中空行进行排除/文件中注释信息进行排除 grep -Ev "^#|^$" 文件信息 sed -n '/^#|^$/!p' 文件信息 awk '/^#|^$/' 文件信息 如何利用awk取出IP地址信息: ip a s eth0|awk -F "[ /]+" 'NR==3{print $6}' --将以连续空格或/为分隔符,取出第3行的第6列 hostname -i 二、awk高级功能说明 普通的模式: 01. 正则表达式作为模式 awk '/^oldboy/{print xx}' 02. 利用比较匹配信息 NR==2 NR>=2 NR<=2 03. NR==2,NR==10 特殊的模式 01.BEGIN{} 在awk执行命令前做什么事情: awk 'BEGIN{print "姓","名","号","捐款记录"}{print $0}' test.txt |column -t 姓 名 号 捐款记录 Zhang Dandan :250:100:175 Zhang Xiaoyu :155:90:201 Meng Feixue :250:60:50 ... 修改内置分隔符变量 awk -F ":" '{print $2}' test.txt awk 'BEGIN{FS=":"}{print $2}' test.txt 02.END{} 在awk执行命令结束之后做的操作 awk 'BEGIN{print "姓","名","号","捐款记录"}{print $0}END{print "操作结束"}' test.txt |column -t 姓 名 号 捐款记录 Zhang Dandan :250:100:175 Zhang Xiaoyu :155:90:201 ... 操作结束 统计累加运算测试: 01. 统计/etc/services文件中空行数量 利用awk公式进行累加运算 awk '/^$/{i=i+1;print i}' /etc/services awk '/^$/{i=i+1}END{print i}' /etc/services --输出最终多少行 02. 统计/etc/services文件中有井号开头的行 awk '/^#/{i++}END{print i}' /etc/services 03. 统计系统中有多少个虚拟用户 普通用户 第一个历程: 用户信息都保存在什么文件中了 用户信息保存文件: /etc/passwd 第二个历程: 从文件中匹配出虚拟用户 普通用户 匹配普通用户 awk '$NF~/bash/' /etc/passwd awk '$NF~/\/bin\/bash/' /etc/passwd 第三个历程: 进行统计 普通用户数量 awk '$NF~/bash/{i=i+1}END{print i}' /etc/passwd --统计最后一列含有bash的所有行 63 虚拟用户数量 awk '$NF!~/bash/{i=i+1}END{print i}' /etc/passwd --统计最后一列不含bash的所有行 22 求和运算: sum=sum+$n(需要进行数值求和的列) seq 10|awk '{sum=sum+$1;print sum}' 总结:awk命令中$符号用法 $1 $2 $3 : 取第几列信息 $NF : 取最后一列 $(NF-n) : 取倒数第几列 $0 : 取所有列的信息
三剑客命令
老三: grep 过滤筛选信息
老二: sed 修改替换文件内容 擅长对文件中的行进行操作
老大: awk 擅长统计分析文件内容 擅长对文件中列进行操作

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/116688.html