功能说明
grep(Global Regular Expression Print)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。其格式如下
grep[选项]pattern file
grep命令的选项及其说明如下
选项 | 说明 |
---|---|
-v | 过滤指定字符串内容的行 |
-i | 不区分大小写 |
-E | 过滤多个字符串 |
-o | 输出多个精确匹配的字符,而不是整行 |
使用案例
[root@tony data]# vim teach.txt #创建测试数据(编辑测试数据内容)
Program language
Java
C
C++
PHP
Python
Ruby
OS
Windows
windows
Linux
Mac
Unix
Android
IOS
过滤掉指定的字符串(“windows”)匹配的行并忽略大小写后将结果输出
[root@tony data]# grep -vi 'windows' teach.txt #忽略大小写并过滤包含Windows字符串的行
Program language
Java
C
C++
PHP
Python
Ruby
OS
Linux
Mac
Unix
Android
IOS
过滤掉多个匹配字符串内容(‘Android|IOS’)的行并将结果输出
[root@tony data]# grep -vE 'Android|IOS' teach.txt #过滤Android和IOS字符串对应的行
Program language
Java
C
C++
PHP
Python
Ruby
OS
Windows
windows
Linux
Mac
Unix
查找指定的进程
[guanglei@tony data]$ ps -ef|grep ssh #查找SSH远程加密连接的进程
root 1403 1 0 09:54 ? 00:00:00 /usr/sbin/sshd
root 1509 1403 0 10:00 ? 00:00:00 sshd: guanglei [priv]
guanglei 1511 1509 0 10:00 ? 00:00:00 sshd: guanglei@pts/1
guanglei 1654 1512 0 10:21 pts/1 00:00:00 grep ssh
功能说明
sed主要用来编辑文件,简化对文件的反复操作,编写转换程序等,擅长取行。其格式如下
sed [选项] [n1,[n2]][function],n1,n2表示选择行数的区间
选项 | 说明 |
---|---|
-n | 取消默认输出 |
-i | 改变文件内容 |
fuction:
d:删除
i:插入
p:打印
s:替换
使用案例
查找匹配字符串内容的行
[root@tony data]# sed -n '/J/p' teach.txt #匹配指定字符串的行
Java
删除匹配字符串内容的行
[root@tony data]# sed -i '/Python/d' teach.txt
[root@tony data]# cat teach.txt
Program language
Java
C
C++
PHP
Ruby
OS
Windows
windows
Linux
Mac
Unix
Android
IOS
[root@tony data]#
实现文件内容的替换
[root@tony data]# sed -i 's#Android#android6.0#g' teach.txt #将Android替换成Android6.0
[root@tony data]# cat teach.txt
Program language
Java
C
C++
PHP
Ruby
OS
Windows
windows
Linux
Mac
Unix
android6.0
IOS
实现指定文件内容的查找并替换
[root@tony data]# mkdir -p grandparent/parent/son #创建三级目录
[root@tony data]# tree #查看目录树结构
.
├── grandparent
│ ├── parent
│ │ ├── son
│ │ │ └── test.txt
│ │ └── test.txt
│ └── test.txt
└── teach.txt
[root@tony data]# echo "This is Linux Operator System" >grandparent/test.txt #创建测试数据
[root@tony data]# echo "This is Linux Operator System" >grandparent/parent/test.txt
[root@tony data]# echo "This is Linux Operator System" >grandparent/parent/son/test.txt
[root@tony data]# find ./ -type f -name "test.txt"|xargs sed -i 's#Linux#Unix#g' #将匹配的文件内容字符串转换为Unix
[root@tony data]# cat grandparent/test.txt #查看修改结果
This is Unix Operator System
获取指定区间行数的内容
[root@tony data]# sed -n '2,5p' teach.txt
Program language
Java
C
C++
awk是一种程序设计语言,允许创建简短的程序,这些程序读取输入文件,为数据排序,处理数据,对输入执行计算以及生成报表。其格式如下
awk ‘{pattern +action}’ {fileNames}
选项 | 说明 |
---|---|
-F | 指定分割的内容 |
内置变量
NR: 表示行号
使用案例
使用awk实现获取指定区间的内容
[root@tony data]# awk '{if(NR<5&&NR>=2)printf $1 "\n"}' teach.txt
Program
Java
C