首页 > 代码库 > linux学习之sed grep

linux学习之sed grep


  1. 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