linux學習之sed grep


  1. sed這個命令最大的做用就是替換,以如下的文檔內容爲例子mysql

wKiom1jfGBGwKTdoAAAhAmip6nE421.png-wh_50

在vim的命令行模式下能夠使用:%s/some/more/將文檔中some替換成morelinux

wKiom1jfGSaQLweqAAAWMOu3SWo181.png-wh_50

用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

wKiom1jfG-ODMDK4AAAfICFz25U286.png-wh_50

cat data.txt | grep -v '^$' | sed 's/^/&id /g' ---在每一行的非空格行的行頭添加id,^符號表示開頭spa

wKioL1jfHCuwRhB_AAAcgQvF0vQ789.png

能夠看到這裏的空格行不在了,那是grep -v '^$' 致使的,grep將在後面講到命令行

sed 's/$/& id /g' data.txt 在文檔每一行的結尾添加空格+id,$符表示結尾3d



sed '/some/i ##########################' data.txt 在有some的那一行前添加一行#,i參數blog

wKioL1jfHhTig6dKAAAbOCxW_Tg052.png-wh_50

sed '/some/a ##########################' data.txt 在有some的那一行後添加一行#,a參數排序


sed -n '/some/p' data.txt  打印含有some的行,-n就是針對行作操做,p參數就是答應,sed負責挑選

wKioL1jfH1aTKGN9AAAaEEOlV0s342.png-wh_50

也能夠選擇指定的行作操做:sed -n '1,5p' data.txt 打印1-5行


如下是結合其它命令對文檔進行指定操做:

wKiom1jfIUHSB7wvAAAYTIHWQAE088.png-wh_50

以上是原始文檔,最終的目的是要選出文檔中最大和最小的數字

cat number.txt | sed 's/ /\n/g' | grep -v "^$" | sort -nr | sed -n '1p;$p'

wKiom1jfImfT_0XdAAARFuCcv8k043.png-wh_50

如今來拆解這些命令

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的那一行

wKioL1jfJJHxq93DAAALZ_nYJdE641.png-wh_50

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的全部行

wKioL1jhIf2Dj2z_AAAUwpxnSQs662.png-wh_50


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的全部行

wKioL1jhIpmgPX1yAAAVSKaIoB0595.png

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  --顯示空行的行號

相關文章
相關標籤/搜索