linux shell 腳本攻略 下

sed 入門mysql

sed能夠替換給定文本中的字符串,固然也能夠用正則表試試匹配linux

sed 's/pattern/replace_string/' file正則表達式

或者sql

cat file | sed 's/pattern/replace_string'shell

使用-i選項,能夠講替換結果應用於原文件數組

sed -i 's/text/replace/' file svn

若是要替換全部的的內容,須要在末尾增長g函數

sed -i 's/pattern/replace/g' file學習

也可使用1g 2g 來從第n+1處開始替換url

移除空白行

sed '/^$/d' file

其中 ^$ 爲行首和行尾 空白行中 行首和行尾是一塊兒的

雙引號用來匹配變量

sed "s/$text/Hello"

若是有特殊字符可使用

sed -i "s#$test#hello#g"

awk


通用語法

awk ' BEGIN { print "start" } pattern { commands } END { print "end" }

file

awk腳本一般由3個部分組成,BENGIN語句塊,END語句塊,和可以使用模式匹配的通用語句塊

awk " BEGIN { statements } {statements} END {end statements }"

例如

awk " BEGIN { i=0 }  { i++ } END { print i } " filename

awk " BEGIN { i=0 } { i++ } end { print i } " filename

如何工做

1.執行 BEGIN { commands } 語句塊中的語句

2.從文件或者輸入流中讀取一行 而後執行 pattern { commands } 重複這個過程

3.到末尾時候,結束 並執行 END 語句


BEGIN 語句 能夠 作些 如  變量初始化,打印輸出表格的表頭等

pattern 語句是主體的命令,若是不不指定,就打印每個讀到的行


簡單說就是 while do


好比

echo -e "line1\nline2" | awk ' BEGIN { print "start" } { print } END { print "end" }'


當print參數是以逗號進行分割時,參數打印時則以空格做爲定界符,在awk的print中,雙引號是被當作拼接操做符使用

echo | awk ' { var1="v1" ;var2="v2" ; print var1,var2;print var1"-"var2;} '

輸出

v1 v2

v1-v2


awk的特殊變量

NR :表示記錄數量 ,在執行過程當中對應於當前的行號

NF : 表示字段數量,在執行過程當中對應於當前行的字段數

$0 :包含執行過程當中當前行的文本

$1 :包含第一個字段的文本內容

$2:包含第2個字段的文本內容

$n: 包含第n個字段的文本內容


echo -e "line f2 f3 \nline2 f4 f5\nline3 f6 f7"|\
awk ' { print "LINE no:"NR",NO OF FIELDS:"NF,"$0="$0,"$1="$1,"$2="$2,"$3="$3 }'

利用-V選項將外部值傳遞給awk

var1="var1";var2="var2"
echo | awk ' { print v1,v2 } ' v1=$var1 v2=$var

使用getline讀取行

過濾

awk ' NR<5 ' 行號小於5

awk ' NR==1,NR==4 '

awk ' /linux'

awk ' !/linux'

設置字段定界符

awk -F: ' print $NF ' /etc/passwd

或者

awk ' BEGIN { FS=":" } { print $NF } ' /etc/passwd

awk 內置函數

length(String)

index(String,search_string) 返回search_sring在字符串中出現的位置

split(String,array,delimiter) 用定界符生成一個字符串列表並將該列表存入數組

substr(String,start,end) 生成子串

sub(regex,replacement,stirng)

match(regex,string) 檢查正則表達式是否可以匹配

打印從M行到N行

awk ' NR==M,NR==N' filename

打印正則表達式直接的

awk ' /start_parttern/./end_parttern/' filename

wget

wget url1 url2

可使用選項 -O 指定輸出的文件名

可使用-o 指定日誌文件

可使用 -t 指定重試次數

if [ $# = 3 ] 參數爲3個

lynx -traversal url 會生成一個reject.dat文件 包含此url的全部連接

tar

歸檔

tar -cf output.tar [SOURCE]

向歸檔中添加文件

tar -rvf test.tar new_file

列出歸檔內容

tar -tf archive.tar

壓縮的時候排除文件

tar --exclude-vcs -czvvf source_code.tar.gz eye_of_gnone_svn

gzip -l test.tar.gz  列出屬性信息

netstat -tnp 列出開放的端口

列出佔用cpu最高的10個進程

ps -eo comm,pcpu --sort -pcpu | head

ps -eLf  --sort -nlwp | head

列出線程數最多的10個進程

操做mysql 能夠須要安裝 mysql-server 和mysql-client

能夠安裝ImageMagick 用來縮放圖片 轉換格式等

這兩天吸取了不少,調整了不少思路,不少能夠再之前和之後的代碼中用到,基本系統的學習了shell,提供了不少思路

相關文章
相關標籤/搜索