首页 > 代码库 > linux学习之sed grep
linux学习之sed grep
sed这个命令最大的作用就是替换,以以下的文档内容为例子
在vim的命令行模式下可以使用:%s/some/more/将文档中some替换成more
用sed命令就方便多了: sed ‘s/some/more/g‘ data.txt --这里没有修改文档原文,最多算个预览
sed -i ‘s/some/more/g‘ data.txt -------有了i参数可以直接将修改保存在文档中
sed ‘s/^/&id /g‘ data.txt 在文档每一行的行头添加id+空格
cat data.txt | grep -v ‘^$‘ | sed ‘s/^/&id /g‘ ---在每一行的非空格行的行头添加id,^符号表示开头
可以看到这里的空格行不在了,那是grep -v ‘^$‘ 导致的,grep将在后面讲到
sed ‘s/$/& id /g‘ data.txt 在文档每一行的结尾添加空格+id,$符表示结尾
sed ‘/some/i ##########################‘ data.txt 在有some的那一行前添加一行#,i参数
sed ‘/some/a ##########################‘ data.txt 在有some的那一行后添加一行#,a参数
sed -n ‘/some/p‘ data.txt 打印含有some的行,-n就是针对行做操作,p参数就是答应,sed负责挑选
也可以选择指定的行做操作:sed -n ‘1,5p‘ data.txt 打印1-5行
以下是结合其它命令对文档进行指定操作:
以上是原始文档,最终的目的是要选出文档中最大和最小的数字
cat number.txt | sed ‘s/ /\n/g‘ | grep -v "^$" | sort -nr | sed -n ‘1p;$p‘
现在来拆解这些命令
cat number.txt | sed ‘s/ /\n/g‘ --将文档中的空格符替换成换行符,这样所有的数字就变成一列了
cat number.txt | sed ‘s/ /\n/g‘ | grep -v "^$" 将排成一列中的空格行去掉,排除首位都是空的
cat number.txt | sed ‘s/ /\n/g‘ | grep -v "^$" | sort -nr sort从大到小排序所有数字
cat number.txt | sed ‘s/ /\n/g‘ | grep -v "^$" | sort -nr | sed -n ‘1p;$p‘ 打印出第一行和最后一行用;
其中的$表示结尾而;表示前面和后面是分开打印不是连续的用,则是连续打印多行sed -n ‘1,5p‘这样
2.grep 命令的作用主要是匹配字符
cat number.txt | grep "4" 表示匹配含有45的那一行
cat number.txt | grep -v "4" 表示排除包含有4这个字符的那一行,这里的“”和‘’没有什么区别
在安装软件时grep命令去查看:rpm -qa | grep mysql ---查看mysql的一些相关的安装包
用sed命令去修改某些文件:sed -i ‘/SELINUX/s/enforcing/disabled/‘ /etc/selinux/config ---永久关闭selinux
本文出自 “linux命令之sed” 博客,请务必保留此出处http://beforce.blog.51cto.com/3335637/1912347
linux学习之sed grep