文本过滤工具

正则表达式:一种用来描述文本模式的特殊语法,由普通字符(例如字符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相关推荐

  1. shell学习笔记 (2)

    shell学习笔记 (2) ---china.pub.com  linux shell电子书学习笔记 第2章 使用find和xargs find pathname -options [-print - ...

  2. shell学习笔记 (9.1)

    第9章 AWK   介 绍 ---china.pub.com  linux shell电子书学习笔记 9.1   调用awk 有三种方式调用a w k,第一种是命令行方式,如: awk |-F fie ...

  3. shell学习笔记---工具学习

    . sort工具 . uniq工具 . paste工具 . cut工具 . xargs工具 . sed工具 . awk工具 . find工具 . 模式空间选择空间 # sort工具 # sort将文件 ...

  4. shell学习笔记整理

    Shell编程学习笔记 第一章基础知识 1.脚本格式: 1.1"#!" 这个符号的名称,叫做"Shebang"或者"Sha-bang" &q ...

  5. 【转】shell学习笔记(一)——学习目的性、特殊字符、运算符等

    1 学习shell的目的性 写之前我们先来搞清楚为什么要学shell,学习要有目的性 shell简单.灵活.高效,特别适合处理一些系统管理方面的小问题 shell可以实现自动化管理,让系统管理员的工作 ...

  6. [Bash Shell] Shell学习笔记

    1. Shell简介 Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的.Shell既是一种命令语言,又是一种程序设计语言.作为命 ...

  7. shell学习笔记二则:统计空间

    最近测试SD卡,顺便学习了一些shell命令,这里顺便记一下. 第一则,为了防止SD卡空间被占满,需要对空间进行判断并清理文件,下面的脚本显示2种方式,一个是通过百分比,一个是通过文件数,个人认为通过 ...

  8. Shell学习笔记---变量赋值与运算(原创)

    声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的. #!/bin/bash #Filename:prameter_parctise2 #Datetime:2010_12_24 09:24 ...

  9. Shell学习笔记一

    Shell 简介 Shell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁.Shell 既是一种命令语言,又是一种程序设计语言. 基本上Shell分两大类: 一:图形界面Shell( ...

  10. Shell学习笔记---date_pratice.sh

    声明:本文仅作学习研究使用,多数语句都是为了介绍语法而构造的. 一个简单的date用法练习脚本!!!!!! #!/bin/bash #Filename:date_practice.sh # Datet ...

最新文章

  1. R Learnilng 十八讲13-17
  2. python 斐波那契数列
  3. Asp.net MVC 示例项目Suteki.Shop分析之---ViewData
  4. python argparse_Python 命令行之旅——初探 argparse
  5. matlab handle plot
  6. ubuntu 14.04 配置 java 环境
  7. 自制 Word、Excel 批转 PDF 工具
  8. 微信公众平台开发教程(二) 基本原理及消息接口
  9. jstl有什么优势(简单介绍)
  10. 【2012 - 百度之星资格赛 - H:用户请求中的品牌】
  11. mysql 的时间函数
  12. VS2012下载网址
  13. IEEE 2021年新增Fellow出炉,70余位华人入选
  14. katana 靶机 wp
  15. 设计模式之禅(一)——六大设计原则
  16. 短时傅里叶变换原理及其MATLAB实现(Short Time Fourier Transform,STFT)
  17. JS实现国家、省、市
  18. 【论文翻译 假新闻检测综述 HICSS 2019】Can Machines Learn to Detect Fake News? A Survey Focused on Social Media
  19. 获取top等之类命令的部分打印内容
  20. pycharm环境配置问题解决一览

热门文章

  1. mac共享文件夹 linux,一文搞定 Linux,Mac,Windows 的 NFS 网络文件共享服务部署
  2. [Android5 系列二] 1. 全实例之控件(Widget)
  3. 在Tomcat 与weblogic 中的 日志(log4j) 配置系列三(log文件的存放路径)
  4. ubuntu 是基于debian gnu/linux,在 Ubuntu 或其它 GNU/Linux 系统下安装 Debian
  5. java double的加法_java Double 进行加减乘除
  6. centos 6.9 mysql5.7_centos6.9升级Mysql版本至5.7
  7. Python根据正则表达式找到相应的字符串然后进行替换
  8. Activiti的历史记录级别
  9. 查看oracle归档大小,ORACLE RAC按实例统计每天归档日志大小
  10. 容器安装java_在docker容器中安装Java(从宿主机向docker容器中拷贝文件)