Linux基本功十三:shell脚本Sed & Awk 及软件的安装
2013-08-07 21:32
489 查看
shell脚本编程Scripting Language【把命令放到一个文本文件里,让其自动执行】 JSP-Java Service Page;perl python shell [bin/sh]--[bin/bash]不同的脚本其语法是不一样的。例如 bash csh tcsh ksh等
1、基础命令用法总结
wc命令。Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
(1)看文件的个数
“sh”并不是一个程序,而是一种标准(POSIX),这种标准,在一定程度上(具体区别见下面的“Things bash has that sh does not”)保证了脚本的跨系统性(跨UNIX系统)
bash的POSIX标准
在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式(等效于bash的 --posix 参数) 一般的,sh是bash的“子集”(不是子集的部分,具体区别见下的“Things sh has that bash does not”)
(6)脚本的分类
第一个字符非#,表示bash脚本;
第一个字符为#,第二个字符非!,表示为csh脚本;
第一个字符是#,第二个字符是!
(7)shell三种执行方式(前面有总结):
直接执行路径相当于打开一个新的shell,bash aa也是打开一个新的bash;
注意export的作用这是在该shell和子shell里可见;
第一:要求可执行权限,且在新shell执行。a+x,输入脚本的绝对路径和相对路径;
./root/backup
./backup
第二:bash脚本 或 tcsh脚本,是在新的shell里执行。表示以bash或tcsh来执行脚本
-bash /root/backup
第三:在脚本的前面加“.”,在当前的shell里执行;
实例:关闭系统中的apache的shell脚本:
(1)sed替换单词 打印 删除
sed的修改没有对源文件进行修改,而只是输出到屏幕;
删除1至10行,替换yellow为black;
(1)用-e 参数直接执行多个命令:
cat operation
在operation文件里:
cat operation
在operation文件里:
-n 默认不打印 只有和p同时使用的时候才会输出;
-f 执行相应的文本
p打印
类似实例如下:
a、sed -e 's/shrek/root' -e 's/root/shrek' /ect/passwd
b、sss是一个文件:
3、awk是一种处理文本的编程语言工具,不仅处理行,还能处理列,功能更强; chkconfig --list | awk '$1=="httpd" {print $5}'(1) 查看apache服务的开关问题,httpd时apache超文本传输协议服务器的主程序;处理列;$1,$2,$3表示第1,2,3列;$0表示第一行; 统计打开的服务有多少个? awk处理列的问题:
awk处理行文本;
(2)a、在/etc/passwd下是用bash的用户有多少个?
info awk
info sed
-F; //表示以冒号作为分隔符;
函数与操纵的东西需要用{ }括起来;
实例应用: 用awk来分析日志文件:
4、软件的安装
(1)源码软件的安装
RPM包安装:
1、基础命令用法总结
wc命令。Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
(1)看文件的个数
ls | wc -l(2)看看有几个文件详细信息
ls -l |grep ^d(3)看有多少个文件夹
ls -l | grep ^d |wc -l(4)查看命令的位置:startx,service
which startx; vi `which startx`(5)[bin/sh]与[bin/bash]的区别
“sh”并不是一个程序,而是一种标准(POSIX),这种标准,在一定程度上(具体区别见下面的“Things bash has that sh does not”)保证了脚本的跨系统性(跨UNIX系统)
bash的POSIX标准
在一般的linux系统当中(如redhat),使用sh调用执行脚本相当于打开了bash的POSIX标准模式(等效于bash的 --posix 参数) 一般的,sh是bash的“子集”(不是子集的部分,具体区别见下的“Things sh has that bash does not”)
(6)脚本的分类
第一个字符非#,表示bash脚本;
第一个字符为#,第二个字符非!,表示为csh脚本;
第一个字符是#,第二个字符是!
(7)shell三种执行方式(前面有总结):
直接执行路径相当于打开一个新的shell,bash aa也是打开一个新的bash;
注意export的作用这是在该shell和子shell里可见;
第一:要求可执行权限,且在新shell执行。a+x,输入脚本的绝对路径和相对路径;
./root/backup
./backup
第二:bash脚本 或 tcsh脚本,是在新的shell里执行。表示以bash或tcsh来执行脚本
-bash /root/backup
第三:在脚本的前面加“.”,在当前的shell里执行;
实例:关闭系统中的apache的shell脚本:
#here ,the " " in AAA is very important! #httpd is a Apache program,the next program is going to kill them. AAA="`pgrep httpd`" [ -z "$AAA" ] && echo 'httpd is not running!' && exit for i in $AAA do kill -9 $i done echo httpd is kill2、sed流编辑器(Stream Editor)shell文本里修改的时候可以用sed。适合行的处理。
(1)sed替换单词 打印 删除
sed的修改没有对源文件进行修改,而只是输出到屏幕;
sed -e 's/root/shrek/g' /etc/passwd > /tmp/a cp /tmp/a /etc/passwd打开包含shrek开头的行
sed -n -e '/shrek/p' /etc/passwd只显示以shrek单词的行
sed -n -e '/\<shrek\>/p' etc/passwd删除包含bash的行
sed -e '/bash/d' /etc/passwd打印并替换
sed -n -e '/\<shrek\>/s/shrek/nologin/p' etc/passwd删除#开头和空格
sed -e '/^#/d' -e '/^$/d' /etc/squid/squid.confs/old/new 替换
删除1至10行,替换yellow为black;
sed -e '1,10d' -e 's/yellow/black/g' yel.dat执行多个命令的的3种方式:多次替换
(1)用-e 参数直接执行多个命令:
sed -e 's/root/shrek/g' -e 's/bash/nologin' /etc/passwd(2)sed -f script_file。当然我们也可以将两个命令写入某个文件
cat operation
在operation文件里:
#!/bin/bash s/root/shrek/g s/bash/nologin/g执行命令:
sed -f operation /etc/passwd(3)进一步简洁,可以写成一个脚本来执行:
cat operation
在operation文件里:
#!/bin/sed -f s/root/shrek/g s/bash/nologin/g执行命令:
./operation /etc/passwd-e 执行命令
-n 默认不打印 只有和p同时使用的时候才会输出;
-f 执行相应的文本
p打印
类似实例如下:
a、sed -e 's/shrek/root' -e 's/root/shrek' /ect/passwd
b、sss是一个文件:
vi sss s/root/shrek s/shrek/root执行以下命令:
sed -f sss /etc/passwdc、脚本文件
vi sss #!/bin/sed -f s/root/shrek s/shrek/root执行以下命令:
<pre name="code" class="objc">chmod a+x sss ./sss /etc/passwd
3、awk是一种处理文本的编程语言工具,不仅处理行,还能处理列,功能更强; chkconfig --list | awk '$1=="httpd" {print $5}'(1) 查看apache服务的开关问题,httpd时apache超文本传输协议服务器的主程序;处理列;$1,$2,$3表示第1,2,3列;$0表示第一行; 统计打开的服务有多少个? awk处理列的问题:
chkconfig --list |awk '{printf $4}' //单引号是避免脚本的影响; chkconfig --list |awk '$1=="httpd" {print $4}' chkconfig --list |awk 'BEGIN {iii=0} {if($5=="3:on") iii=iii+1} END{print iii}' if[ `chkconfig --list | awk '$1=="httpd" {print $5}'` = "3:on" ];then echo ok;fi
awk处理行文本;
(2)a、在/etc/passwd下是用bash的用户有多少个?
awk -F: 'BEGIN {iii=0} {if($7=="/bin/bash") iii+=1} END{print iii}' < /etc/passwd以:作为分隔符;统计第七列中有/bin/bash的用户的个数;
awk -F: '{print $1 "UID is " $3}' /etc/passwdb、利用脚本文件来处理:awk -f excute_file;
vi aa BEGIN {iii=0} {if ($5=="3:on") iii+=1} END {print iii}执行命令:
chkconfig --list | awk -f aa通过info可以查看帮助文档,有*的可是点击打开,是小例子,按U返回:
info awk
info sed
-F; //表示以冒号作为分隔符;
函数与操纵的东西需要用{ }括起来;
实例应用: 用awk来分析日志文件:
cd /var/log/httpd这里我们可以用sed和awk来分析这些数据,统计里面的次数;
4、软件的安装
(1)源码软件的安装
tar -xvfj http...bz2 //解压 cd httpd ./configure //配置环境 make //编译 make install //安装 uninstall //卸载(2)*1386.rpm安装包和windows里的软件包一样的,打包的二进制安装文件;
RPM包安装:
rpm -ivh somesoft.rpm //安装 rpm -e somefost.rpm //反安装 rpm -q somefost 或 rpm -qpi somefost.rpm//查询(3)或者直接打开软件商店,直接点击安装。
相关文章推荐
- linux下shell脚本的使用——安装madplay播放器,sed函数详解
- Linux环境一键自动化安装oracle软件的构想(附shell脚本)
- Linux_shell_ grep && awk && sed
- Linux的shell脚本grep、sed、awk练习和diff、patch、cut、sort介绍
- 学习笔记之Shell脚本学习指南 & sed与awk & 正则表达式
- sed && awk工具 及一些常用的shell脚本
- 安装完Ubuntu后通过shell脚本一键安装软件
- Linux环境下通过shell脚本一键安装redis
- linux基础(十三)软件安装rpm、yum
- Linux服务器安全初始化自选安装Shell脚本
- linux-shell脚本命令之sed
- Shell脚本实现在Linux系统中自动安装JDK
- HBASE&nbsp;安装、shell脚本命令进…
- Linux执行shell脚本方式及区别&命令后台运行
- Linux命令行与shell脚本(15)--sed使用
- 【找一找青春】Linux 性能监控之CPU&内存&IO监控Shell脚本1[转]
- Linux:shell脚本命令: >/dev/null 2>&1 的理解
- linux 之cut awk 和批量文件编码转换 shell脚本
- shell脚本实现linux下自动安装Oracle10g
- Shell脚本学习笔记(七)--sed和awk