grep、sed、awk和正则表达式
2017-12-26 11:50
1076 查看
grep
SYNOPSISgrep [OPTIONS] PATTERN [FILE...]
grep [OPTIONS] [-e PATTERN | -f FILE] [FILE...]
常用选项
-a 不忽略二进制数据。
-A 显示改行和改行后的内容
-B 显示改行和改行前的内容
-C 显示该行和改行前后的内容
-R/-r 递归,匹配目录
-d <action> 对指定目录进行相应的操作,read:读取目录下所有文件,resource 同 -r递归。
-i 忽略大小写
-w 只显示全字符匹配的列,用于匹配单词。
-v 反选。
举个栗子 |
---|
grep -a 'root' /etc/passwd #在文件中匹配root,不忽略二进制数据 grep -A 2 'root' /etc/passwd # 在文件中匹配root,并显示改行的下面两行 grep -B 2 'root' /etc/passwd # 在文件中匹配root,并显示改行的上面两行 grep -C 2 'root' /etc/passwd # 在文件中匹配root,并显示改行的上下各两行,共五行 grep -R 'hello world' /tmp # 在/tmp目录下所有文件中匹配'hello world',不指定目录就是在/目录下匹配,那速度杠杠的 grep -w 'bin' /etc/passwd #在/etc/passwd文件中匹配bin单词,不会匹配到sbin grep -v '^$' /etc/profile | grep -v '^#' #匹配除#开头和空白行外的所有行
sed
太多了,参考文档:sed命令详解SYNOPSIS
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
常用选项
-e <script> 使用指定的脚本(命令)来匹配
-f <script-file> 使用指定的脚本文件(文件)来匹配
-n 静默模式,仅显示处理后的结果
-i 编辑模式(会直接修改文件,如果提供或者则会备份原文件)
栗子 |
---|
sed -e 's/TEST/test/' -e '/hello/a\rance' test |
#将第一个TEST替换成test,在hello后面加上rance(不会修改原文件) |
sed -n -e 's/TEST/test/' -e '/hello/a\rance' test #只显示处理了的行 |
sed -i.bak -e 's/TEST/test/' test #将文件中的第一个TEST修改为test,并将原文件加.bak进行备份 |
修改为 <value>centos:2181,master:2181,client:2181</value>
语句:
sed -e '$a\ ' hosts|sed -e ':a;N;$!ba;s/\n/:2181,/g'|sed -e 's#, $#</value>#' -e'1i\<value>'|sed ':a;N;$!ba;s/\n//'
代码解释:先'$a\ '在最后添加一个空白行, ':a;N;$!ba;s/\n/:2181,/g'将所有的换行符替换为:2181, 's#, $#</value>#' 将会后一行的结束符替换为</value>,'1i\<value>'在第一行添加<value>,':a;N;$!ba;s/\n//'将换行符删掉
在test文件aaa所在行下添加一行内容
sed -i '/.*aaa.*/{s#$#\n新的内容#}' test
sed表达式中使用变量(注意\转译符的使用)
test=12345
echo 'asdf'|sed -e "\$a${test}"
awk
参考文档:awk命令详解SYNOPSIS
awk [options] 'script' var=value file(s)
awk [options] -f scriptfile var=value file(s)
常用选项
-F 指定分隔符
-v 赋值一个变量,将外部参数传递给awk
-f 指定脚本文件处理awk命令
栗子 |
---|
awk -F '[:/]' '{print $10}' /etc/passwd |
将换行符替换为: |
下面两种方法都可以 |
sed ':a;N;$!ba;s/\n/:/g' hosts |
tr "\n" " " <hosts >hosts2 #"这种输出结果的最后也没有换行符" |
正则表达式
先看看极客这张图正则表达式功能强大,但是非常复杂,非特殊情况会用即可。
参考:正则表达式参考1
正则表达式参考2
参考:
sed命令详解awk命令详解
正则表达式参考1
正则表达式参考2
相关文章推荐
- grep、sed、awk、perl等对正则表达式的支持的差别
- grep正则表达式规范 在sed、awk及C语言中用正则表达式
- awk-grep-sed简单使用总结(正则表达式的应用)
- 正则表达式及grep、sed、awk、cut、sort、uniq工具
- 正则表达式和grep,sed,awk
- grep、sed、awk、perl 等对正则表达式的支持的差别
- 某网友总结的grep、sed、awk、perl等对正则表达式的支持的差别,谁给贴个网址
- Shell正则表达式与grep、sed、awk的特点
- Linux中正则表达式与文件格式化处理命令(awk/grep/sed)
- 轻松上手 正则表达式与grep,sed,awk(一)
- shell脚本之正则表达式、函数、grep、sed、awk、printf等基本命令配置详解
- 正则表达式和使用正则表达式的grep,sed,awk等工具
- 在grep ,awk ,sed 中的正则表达式
- grep、sed、awk、perl等对正则表达式的支持的差别
- (管道| / 重定向> / xargs)/find 与xargs结合使用/vi,grep,sed,awk(支持正则表达式的工具程序)
- grep,sed,awk与简单正则表达式应用
- Shell正则表达式与grep、sed、awk的特点
- grep、sed、awk、perl等对正则表达式的支持的差别
- Linux 正则表达式 vi, grep, sed, awk
- 转――[Shell学习笔记] Shell正则表达式与grep、sed、awk的特点