一、正则表达式是什么?

正则表达式是用于描述字符排列和匹配模式的一种语法规则。它主要用于字符串的模式分割、匹配、查找及替换操作。

二、正则表达式与通配符

1. 正则表达式

用来在文件中匹配符合条件的字符串,正则表达式是“包含匹配”。grep、awk、sed等命令可以支持正则表达式。

2. 正则表达式元字符

正则表达式是通过元字符来进行字符串匹配的,具体请参考:http://www.cnblogs.com/refine1017/p/5011522.html

3. 通配符

用来匹配符合条件的文件名,通配符是“完全匹配”。ls、find、cp这些命令不支持正则表达式,所以只能使用shell自己的通配符来进行匹配了。

4. 通配符包括

* 匹配任意字符

? 匹配任意一个字符

[] 匹配中括号中的任意一个字符

三、cut命令

cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。

1. 常用参数

-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。

2. 示例1:打印出用制表符分割的文件的某一行

[root@localhost shell]# cat student.txt
ID Name Gender Mark
ming F
zhang F
wang M
li M
[root@localhost shell]# cut -f student.txt
Mark

3. 示例2:打印csv文件的某一行

[root@localhost shell]# cat student.csv
ID,Name,Gender,Mark
,ming,F,
,zhang,F,
,wang,M,
,li,M,
[root@localhost shell]# cut -d "," -f student.csv
Mark

4. 示例3:打印一个字符串的第几个字符

[root@localhost shell]# echo "abcdef" | cut -c
c

5. 示例4:截取中文字符的某一个文字

[root@localhost shell]# echo "Shell编程" | cut -nb
S
[root@localhost shell]# echo "Shell编程" | cut -nb
h
[root@localhost shell]# echo "Shell编程" | cut -nb
e
[root@localhost shell]# echo "Shell编程" | cut -nb
l
[root@localhost shell]# echo "Shell编程" | cut -nb
l
[root@localhost shell]# echo "Shell编程" | cut -nb

[root@localhost shell]# echo "Shell编程" | cut -nb

四、printf命令

1. 命令格式

printf   '输出类型输出格式'   输出内容

2. 输出类型

%ns:输出字符串。n代表输出几个字符,n省略则代表全部字符

%ni:输出整数。n是指输出几个数字,n省略代表所有数字

%m.nf:输出浮点数。m和n是数字,指代输出的整数位数和小数位数。如%8.2f则代表共输出8位数,其中2位是小树,6位是整数。

3. 输出格式

\a:输出警告声音

\b:输出退格键(Backspace)

\f:清除屏幕

\n:换行

\r:回车(Enter)

\t:水平输出退格键

\v:垂直输出退格键

4. 示例

[root@localhost ~]# printf '%i %s %i %s %i\n'  "+"  "="
+ =
[root@localhost ~]# printf '%i-%i-%i %i:%i:%i\n'
-- ::

五、awk命令

1. 命令格式

awk '条件1{动作1}条件2{动作2}...' 文件名

条件:一般使用关系表达式作为条件,如x > 10

动作:格式化输出、流程控制语句

2. 示例1:提取制表符分割的文件的某一行

[root@localhost shell]# cat student.txt
ID Name Gender Mark
ming F
zhang F
wang M
li M
[root@localhost shell]# awk '{print $1 "\t" $4}' student.txt
ID Mark

3. 示例2:获取磁盘利用率

[root@localhost shell]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda2 18G .4G 14G % /
/dev/sda1 289M 16M 258M % /boot
tmpfs 411M 411M % /dev/shm
[root@localhost shell]# df -h | grep "sda1" | awk '{print $5}'
%

六、sed命令

sed是一种几乎包括在所有UNIX平台(包括Linux)的轻量级流编辑器。sed主要是用来将数据进行选取、替换、删除、新增的命令。

1. 命令格式

sed [选项] '[动作]' 文件名

2. 选项

-n:一般sed命令会把所有数据都输出到屏幕,如果加入此选择,则只会把经过sed命令处理的行输出到屏幕。

-e:允许对输入数据应用多条sed命令编辑。

-i:用sed的修改结果直接修改读取数据的文件,而不是由屏幕输出。

3. 动作

a:追加,在当前行后添加一行或多行

c:行替换,用c后面的字符串替换原数据行

i:插入,在当前行前插入一行或多行。

d:删除,删除指定的行

p:打印,输出指定的行

s:字符串替换,用一个字符串替换另一个字符串。格式为“行范围/s/旧字符串/新字符串/g”(和vim中的替换格式类似)

4. 示例

[root@localhost shell]# cat student.txt
ID Name Gender Mark
ming F
zhang F
wang M
li M 90 #测试-n参数
[root@localhost shell]# sed -n '2p' student.txt
ming F 85 #测试单行删除
[root@localhost shell]# sed '2d' student.txt
ID Name Gender Mark
zhang F
wang M
li M 90 #测试多行删除
[root@localhost shell]# sed '2,4d' student.txt
ID Name Gender Mark
li M 90 #测试追加
[root@localhost shell]# sed '2a test append' student.txt
ID Name Gender Mark
ming F
test append
zhang F
wang M
li M 90 #测试插入
[root@localhost shell]# sed '2i test insert' student.txt
ID Name Gender Mark
test insert
ming F
zhang F
wang M
li M 90 #测试行替换
[root@localhost shell]# sed '2c test replace' student.txt
ID Name Gender Mark
test replace
zhang F
wang M
li M 90 #测试内容替换
[root@localhost shell]# sed '2s/ming/replace/g' student.txt
ID Name Gender Mark
replace F
zhang F
wang M
li M

最新文章

  1. YUV RGB播放器 打开, 显示RGB数据
  2. java:读/写配置文件
  3. Delphi XE5 常见问题解答
  4. HDOJ-三部曲-1002-Radar Installation
  5. mybatis 入门二
  6. ucenter同步登陆机制
  7. ORA-00257: 归档程序错误。在释放之前仅限于内部连接
  8. 基于OpenCV的人脸识别[iOS开发笔记(2)]
  9. 各浏览器对 onbeforeunload 事件的支持与触发条件实现有差异
  10. 解决WCF 调用方未由服务器进行身份验证或消息包含无效或过期的安全上下文令牌
  11. Mac上安装Tomcat
  12. 一步步学习EF Core(2.事务与日志)
  13. Java Byte取值范围
  14. 希尔排序(Go语言)
  15. 终于懂得Perl句柄是什么意思了
  16. ubuntu18.04 安装 php7.2
  17. q次询问,每次给一个x,问1到x的因数个数的和。
  18. go中的无限极分类的问题
  19. putty登录显示IP
  20. 【Spider】学习使用XMLFeedSpider

热门文章

  1. websocket的php测试demo
  2. (剑指Offer)面试题16:反转链表
  3. PHP 根据类名和方法名已面向对象的方式执行函数。
  4. Java的初步认识
  5. IE兼容CSS3圆角border-radius的方法(同时兼容box-shadow,text-shadow)
  6. python批量GBK转UTF-8
  7. DataInputStream和DataOutputStream使用方法细节探讨
  8. [Angular2 Router] Understand the Angular 2 Base href Requirement
  9. [AngularJS] Best Practise - Module
  10. PHP定时执行任务的实现(转)