sed這個命令最大的做用就是替換,以如下的文檔內容爲例子mysql
在vim的命令行模式下能夠使用:%s/some/more/將文檔中some替換成morelinux
用sed命令就方便多了: sed 's/some/more/g' data.txt --這裏沒有修改文檔原文,最多算個預覽sql
sed -i 's/some/more/g' data.txt -------有了i參數能夠直接將修改保存在文檔中vim
sed 's/^/&id /g' data.txt 在文檔每一行的行頭添加id+空格ide
cat data.txt | grep -v '^$' | sed 's/^/&id /g' ---在每一行的非空格行的行頭添加id,^符號表示開頭spa
能夠看到這裏的空格行不在了,那是grep -v '^$' 致使的,grep將在後面講到命令行
sed 's/$/& id /g' data.txt 在文檔每一行的結尾添加空格+id,$符表示結尾3d
sed '/some/i ##########################' data.txt 在有some的那一行前添加一行#,i參數blog
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
cat number.txt | grep "40" ---尋找有含有40的全部行
cat number.txt | grep "5"| sed 's/45/robin/g' ---將匹配中的行中的45替換成robin
cat number.txt | grep -v "5" ------顯示出沒有5存在的全部行
grep "^my" data.txt --找出以my開頭的全部行
grep "it$" data.txt ---找出以it結尾的全部行
grep "[0-9]" data.txt --找出包含0-9的全部行
grep "[a-z]" data.txt --找出包含a-z的全部行
grep "^[a-z]" data.txt --找出以a-z開頭的行
grep "^172$" data.txt --找出只有172這一行
grep -n "172" data.txt ---打印行號
grep -n "^$" date.txt --顯示空行的行號