grep awk sed 简单使用介绍
GREP
###功能
linux中查看文件内容可以用more,tail,cat甚至vi等等,但是经常只需要检索文件中含有某些内容的行,而且文件可能有上千上万行,则前面几种工具会很崩溃,然而grep和awk则可以很容易的从文件中检索到你所需要的内容。
###用法
grep [options] ‘表达式’ 文件列表或文件夹路径
###选项
option | 功能 |
---|---|
-c | 输出符合条件的行的总数 |
-I | 不区分大小写 |
-h | 查询多文件时不显示实文件名 |
-l | 查询多文件时只输出符合条件的文件名 |
-n | 显示匹配行及行号 |
-v | 显示不匹配的所有行 |
###例子
grep abc file #显示file中匹配abc字符串的行
grep root /etc/passwd #显示passwd中带有root的行
##AWK
awk对文件中的内容以行为单位读取,然后以制定字符作为分隔符,将一行内容进行分割,然后通过$0(第一个分割内容),$1等读取内容,再对内容进行操作。结合grep使用时,可以先搜索到指定行,然后再对指定行进行分割,再对对应内容提取。后续可以使用awk命令修改内容。
###用法
awk [options] ‘表达式’ 文件列表或路径
###选项
option | 功能 |
---|---|
-F | 指定分隔符,默认是空格 |
-v | 定义一个变量传给awk |
-f | awk从脚本中读取命令 |
###例子
awk -F: ‘{ print $NF }’ /etc/passwd #打印出/etc/passwd文件中,以:为分隔符的字段数
##SED
sed可以对文件进行编辑,可以结合正则表达式,配合grep和awk使用,很强大。
###用法
sed [options] ‘命令’ 文件或路径
###选项
选项 | 功能 |
---|---|
-e | 以指定的脚本处理输入文件 |
-f | 以指定脚本文件处理输入文件 |
-v | 显示版本信息 |
###命令
command | 功能 |
---|---|
a | 在当前行下面插入内容 |
i | 在当前行上面插入内容 |
d | 删除当前行的内容 |
s | 替换指定字符 |
w | 写并追加莫板块到文件末尾 |
命令一般结合正则表达式使用
###例子
sed 's/book/books/g' file #命令中后缀/g表示作用于每一行的所有匹配内容
##总结
自己总结的比较简单,足够简单的使用,更多详细的使用参见以下:
column | column |
---|---|
grep | http://man.linuxde.net/grep |
awk | http://man.linuxde.net/awk |
sed | http://man.linuxde.net/sed |
其他linux命令详解 | http://man.linuxde.net |
在很多shell脚本中,经常将grep、awk、sed命令结合使用,对配置文件进行修改更新: grep … | awk … | sed …。