shell 学习笔记2
文本过滤工具
正则表达式:一种用来描述文本模式的特殊语法,由普通字符(例如字符A-Z)以及特殊字符(称为元字符,如/ . * ?等)组成匹配字符串。
文本过滤工具在某种模式下都支持正则表达式。
#基本元字符
^ 只匹配行首
$ 只匹配行末
* 匹配0个或多个单字符
[] 只匹配[]内字符,可以是单个字符,也可以是字符序列,可以使用-表示范围,如[1-5]表示[12345].
\ 用来屏蔽元字符的含义
. 只匹配任意单字符
pattern\{n\} 匹配pattern出现的次数,n代表次数
pattern\{n,\} 匹配pattern至少出现n次
pattern\{n,m\} 匹配pattern出现的次数在n-m之间。
#example
...x..x..x
drwxrwxrwx 匹配
-rwxrwxrwx
-rwxr-xr-x 不匹配
#特殊字符
" ' || ^ * +
\*\.pas 匹配以*.pas结尾的所有字符或文件
A\{2\}B AAB
A\{2,\}B AAB AAAB
A\{2,4\}B AAB AAAAB AAAB
#Find
find pathname [option] [-print -exec -OK]
-print 标准输出到屏幕
-exec 后接命令。'command' {} \ ; 执行前不提示确认
-ok 执行前提示确认
option参数:
-name 后跟文件名称,按文件名查找
-perm 后跟权限,按权限查找
-user 后跟用户名,按文件属主查找
-group 后跟组名,按文件所属的用户组查找
-nouser 后跟用户名,查找无效用户的文件
-nogroup 后跟组名,查找无效用户组的文件
-mtime -n +n -n为N天以内修改的文件,+n为N天以前修改的文件
-type 后跟文件类型,按文件类型查找
-size 后跟数字,按大于或小于这个大小查找文件
find . -size +1000000c -print c代表字节 大于1M
find . -size +10000 -print 大于10块
-depth 先匹配文件,再在安的子目录中查找。
-newer 按文件修改时间查找,比较两个文件的新旧程序。
-exec 将前面执行的结果传递给后面的命令。
find /var/log/ -name "*.log" -mtime +5 -OK rm {} \;
-xargs
find ./ -perm 7 -print |xargs chmod o-w 将前面找到的文件所属其它组的用户权限-w
#grep [option]正则表达式[文件]
#-option
-c 显示匹配行数
-n 显示匹配的行及行号
-h 查询多文件时不显示文件名
-H 查询文件时显示文件名
-i 不区分大小写
-v 显示不包匹配文本的所有行
-l 查询多文件时只输出包含匹配字符的文件名。
grep "jenny" *.txt 在所有txt文件中查询
^[^210]非210头的
[[:upper:]] [A-Z]
[[:alnum:]] [0-9a-zA-Z]
[[:lower:]] [a-z]
[[:space:]] [空格或tab键]
[[:digit:]] [0-9]
[[:alpha:]] [a-zA-Z]
grep [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}
#awk
#awk [-F filed-spearator] 'command' input-files 命令方式调用 filed-spearatorl输出分隔符,默认为空格。
#包括模式和动作,动作放在大括号中{}一般为print,分隔符、域和记录。域表示为:$1 $2 $n
#awk脚本调用
awk '{print $0}' xxx.txt |tee xxx.file 打印xxx.txt文件所有的域并输出为文件xxx.file
awk '{print $1 "\t" $4}' xxx.txt 打印xxx.txt文件的第一个域和第4个域,并以Tab分开
awk 'begin {print "NAME Maths\n-------"} {print $ "\t" $4} end {"end-of-report"}' xxx.txt 输出为以下格式:
NAME Maths
-----------------
xxx xxx
…… ……
end-of-report
#awk
#特殊元字符:+,?
~表示匹配,!~表示不匹配
cat xxx.txt |awk '$0 ~/xxx/'
cat xxx.txt |awk '$0 !~/xxx/'
awk '{if($1=="xxx")print $0}' xxx.txt
#sed
#sed [option] sed命令 输入文件
#sed [选项] -f sed脚本文件 输入文件
#sed脚本文件 [选项] 输入文件
#-n不打印 p打印匹配行
-c 下一命令是编辑命令
-f 正在调用sed脚本文件
x 行号
x,y 行号范围从x到y
/pattern/ 查询包含模式的行
/pattern/pattern 查询包含两个模式的行
pattern/,x 在给定的行号上查询包含模式的行
x,/pattern/ 通过行号和模式查询匹配的行
x,y! 查询不包含指定等号x和y的行
#基本sed编辑命令
p 打印匹配行
= 显示文件行号
a\ 在定位行号后附加新文本信息
i\ 在定位行号后插入新文本信息
d 删除定位行
c\ 用新文本替换定位文本
s 使用替换模式替换相应模式
r 从另一个文件中读取文本输入到当前匹配到行中
w 写文本到别一个文件
q 第一个模式匹配后立即退出
l 显示与八进制ASCII代码等价的控制字符
{} 在定位行执行命令组
n 从另一个文件中读文本下一行,并附加在匹配行的下一行
g 将模式2粘贴到/pattern n/
y 传送字符
#example
sed -n '2p' xxx.txt 打印xxx.txt第二行信息
sed -n '1,4p' xxx.txt 打印xxx.txt的1-4行
sed -n '/los/p' xxx.txt 打印匹配模式los的行
sed -n '4,/los/p' xxx.txt 打印第4行开始匹配los模式结束
sed -n '/^$/=' xxx.txt打印空行
#合并与分割
sort [option] files
-c 测试文件是否已经排序
-m 合并两个分类文件
-u 删除所有复制行
-o 存储sort结果的输出文件名
-t 域分隔符;用非空格或tab键分隔域
+n-n 域号,使用些域号开始分类
-n 指定分类是域上的数字分类项
-r 比较求逆
#example
sort -c xxx.txt
sort -u xxx.txt 合并重复的行
sort -r xxx.txt 以相反的顺序进行排序
sort -t "/" +2n xxx.txt
#uniq [option] files 去掉重复的行
-u 显示不重复的行
-d 只显示有重复的行,每种重复行只显示其中一行
-e 打印每一重复行出现次数
-f n为数字,前n个域被忽略
#example
uniq -c xxx.txt
uniq -d xxx.txt
uniq -f 2 xxx.txt
uniq -d xxx.txt
#join [option] file1 file2
#split [option]
-b n 每个分割文件的大小n(K,M)
-C n 每个分割文件一行最多n字节
-l n 每个分割文件的行数n
-n 同-l n
#example
split -10 ls xxx.txt split 后一个split代表以他开头
转载于:https://blog.51cto.com/ryan0817/606043
shell 学习笔记2相关推荐
- shell学习笔记 (2)
shell学习笔记 (2) ---china.pub.com linux shell电子书学习笔记 第2章 使用find和xargs find pathname -options [-print - ...
- shell学习笔记 (9.1)
第9章 AWK 介 绍 ---china.pub.com linux shell电子书学习笔记 9.1 调用awk 有三种方式调用a w k,第一种是命令行方式,如: awk |-F fie ...
- shell学习笔记---工具学习
. sort工具 . uniq工具 . paste工具 . cut工具 . xargs工具 . sed工具 . awk工具 . find工具 . 模式空间选择空间 # sort工具 # sort将文件 ...
- shell学习笔记整理
Shell编程学习笔记 第一章基础知识 1.脚本格式: 1.1"#!" 这个符号的名称,叫做"Shebang"或者"Sha-bang" &q ...
- 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等
1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...
- [Bash Shell] Shell学习笔记
1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...
- shell学习笔记二则:统计空间
最近测试SD卡,顺便学习了一些shell命令,这里顺便记一下. 第一则,为了防止SD卡空间被占满,需要对空间进行判断并清理文件,下面的脚本显示2种方式,一个是通过百分比,一个是通过文件数,个人认为通过 ...
- Shell学习笔记---变量赋值与运算(原创)
声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的. #!/bin/bash #Filename:prameter_parctise2 #Datetime:2010_12_24 09:24 ...
- Shell学习笔记一
Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. 基本上Shell分两大类: 一:图形界面Shell( ...
- Shell学习笔记---date_pratice.sh
声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的. 一个简单的date用法练习脚本!!!!!! #!/bin/bash #Filename:date_practice.sh # Datet ...
最新文章
- R Learnilng 十八讲13-17
- python 斐波那契数列
- Asp.net MVC 示例项目Suteki.Shop分析之---ViewData
- python argparse_Python 命令行之旅——初探 argparse
- matlab handle plot
- ubuntu 14.04 配置 java 环境
- 自制 Word、Excel 批转 PDF 工具
- 微信公众平台开发教程(二) 基本原理及消息接口
- jstl有什么优势(简单介绍)
- 【2012 - 百度之星资格赛 - H:用户请求中的品牌】
- mysql 的时间函数
- VS2012下载网址
- IEEE 2021年新增Fellow出炉,70余位华人入选
- katana 靶机 wp
- 设计模式之禅(一)——六大设计原则
- 短时傅里叶变换原理及其MATLAB实现(Short Time Fourier Transform,STFT)
- JS实现国家、省、市
- 【论文翻译 假新闻检测综述 HICSS 2019】Can Machines Learn to Detect Fake News? A Survey Focused on Social Media
- 获取top等之类命令的部分打印内容
- pycharm环境配置问题解决一览
热门文章
- mac共享文件夹 linux,一文搞定 Linux,Mac,Windows 的 NFS 网络文件共享服务部署
- [Android5 系列二] 1. 全实例之控件(Widget)
- 在Tomcat 与weblogic 中的 日志(log4j) 配置系列三(log文件的存放路径)
- ubuntu 是基于debian gnu/linux,在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian
- java double的加法_java Double 进行加减乘除
- centos 6.9 mysql5.7_centos6.9升级Mysql版本至5.7
- Python根据正则表达式找到相应的字符串然后进行替换
- Activiti的历史记录级别
- 查看oracle归档大小,ORACLE RAC按实例统计每天归档日志大小
- 容器安装java_在docker容器中安装Java(从宿主机向docker容器中拷贝文件)