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,提供了不少思路

相关文章
相关标签/搜索