标签:UI value 提示信息 编译 fdsfs 通信 mount pac 转移
* | (|))
[root@localhost yj]# egrep -n ‘ro+t‘ passwd
[root@localhost yj]# egrep -n ‘ro?t‘ passwd
[root@localhost yj]# egrep -n ‘ro*t‘ passwd
练习:
写出一个正則表達式:
字母‘m‘开头后面是4个连续的随意字母后面是‘:‘后面是3个连续的字母‘a‘最后是‘s‘结尾
[root@localhost yj]# grep -n ‘^m[a-zA-Z]\{4\}:a\{3\}s$‘ passwd
awk 使用
依据指定符号对一行数据分解成多个数据域
数据域:数据行依据指定符号分解之后产生的子数据
-F 符号
awk -F ,
awk 默认分解符号是空格
awk 命令语法:
awk -F 分解符号 ‘命令‘ 数据源(文档 管道输入数据)
特殊符号
$0:全部数据域
$1:第一个数据域
$2:第二个数据域
$3:第三个数据域
[root@localhost yj]# awk -F , ‘{print $4}‘ awkfile
[root@localhost yj]# awk -F , ‘{print $0}‘ awkfile
[root@localhost yj]# awk -F , ‘{print $1"\t"$3"\t"$5}‘ awkfile
[root@localhost yj]# awk -F , ‘{print $1" "$3" "$5}‘ awkfile
[root@localhost yj]# awk -F , ‘{print $1,$3,$5}‘ awkfile
[root@localhost yj]# awk ‘{print $1}‘ awkfile
awk 运行命令组成部分:
1.BEGIN
2.数据行
3.END
[root@localhost yj]# awk -F , ‘BEGIN{ print "adfdsfdsf"}‘ awkfile
[root@localhost yj]# awk -F , ‘BEGIN{ print "name\tscore"} {print $1"\t"$6}‘ awkfile
[root@localhost yj]# awk -F , ‘BEGIN{ print "name\tscore"} {print $1"\t"$6} END{print "total="}‘ awkfile
[root@localhost yj]# awk -F , ‘BEGIN{total=0} {print $1"\t"$6;total=total+$6} END{print "total="total}‘ awkfile
[root@localhost yj]# awk -F , ‘{if($4=="Yellow") print $0;else print "error"}‘ awkfile
[root@localhost yj]# awk -F , ‘{if($4=="green" || $4=="Green") print $0}‘ awkfile
[root@localhost yj]# awk -F , ‘{if($4 ~/[gG]reen/) print $0}‘ awkfile
[root@localhost yj]# awk -F , ‘$4~/[gG]reen/‘ awkfile
[root@localhost yj]# awk -F , ‘{if($4 !~/[gG]reen/) print $0}‘ awkfile
[root@localhost yj]# awk -F , ‘{if($6<=$7) print $0}‘ awkfile
[root@localhost yj]# awk -F , ‘{if($5<=$6 && $6<=$7) print $0}‘ awkfile
[root@localhost yj]# awk -F , ‘$1~/^...a/‘ awkfile
[root@localhost yj]#awk -F , ‘$4 ~ /Yellow|Brown/‘ awkfile
[root@localhost yj]#awk -F , ‘$0 ~ /^J/‘ awkfile
[root@localhost yj]# cat awkfile | awk -F , ‘{print $2}‘
[root@localhost yj]# echo "a,b,c,d" | awk -F , ‘{print $2}‘
[root@localhost yj]# echo "a,b,c:1,2,3:e,r,t" | awk -F : ‘print $1"\n"$2"\n"$3}‘ | awk -F , ‘{print $2}‘
[root@localhost yj]# data=`echo "a,b,c:1,2,3:e,r,t" | awk -F : ‘{print $1"\n"$2"\n"$3}‘ `
//反 `` 把``中的命令运行的数据赋值给变量
[root@localhost yj]# data=`echo "a,b,c:1,2,3:e,r,t" | awk -F : ‘{if($0!~/^$/) print $1"\n"$2"\n"$3}‘ | awk -F , ‘{print $2}‘`
awk内部特殊变量
FILENAME:文件名称
NR:行数
NF:列数
ARGC 命令行參数个数
ARGV 命令行參数排列
ENVIRON 支持队列中系统环境变量的使用
FILENAME awk读取的文件名称
FNR 当前文件已处理的记录行数
FS 设置域分隔符。相当于-F
NF 域的列数 $NF标识最后处理域
NR 已处理的记录总行数
OFS 设置输出字段域分隔符
RS/ORS 换行符
[root@localhost yj]# awk -F , ‘{print NR "\t" NF "\t" FILENAME}‘ awkfile
[root@localhost yj]# awk -F , ‘{if(NR==3) print $0}‘ awkfile
练习:
1.数据/etc文件夹下全部一般文件大小总和
[root@localhost etc]# ls -l | grep ‘^-‘ | awk ‘BEGIN{total=0} {total=total+$5} END{print total/1024}‘
sed
sed是在缓冲区中对文档中的内容 改动 添加 删除 替换,改动的结果都不会影响到原文件,利用管道把改动的内容提交到原文件里
sed语法
sed -nfi ‘commad‘ 文件名称
-n:仅仅输出sed改动的内容
-f:直接改动文件里内容(非缓冲区)
-i:直接对文件编辑
sed经常使用的命令
d:删除
a:添加一行和多行
p:打印输出
c:替换数据行
i:插入新行
s:替换数据行的局部数据
g:全部字符
删除行
[root@localhost yj]# sed ‘1d‘ awkfile //删除第一行
[root@localhost yj]# sed ‘1,2d‘ awkfile //删除第一行到第二行
[root@localhost yj]# sed ‘$d‘ awkfile //删除最后一行
[root@localhost yj]# sed ‘2,$d‘ awkfile
输出行
[root@localhost yj]# sed -n ‘1p‘ awkfile //输出第一行
[root@localhost yj]# sed -n ‘1,2p‘ awkfile
[root@localhost yj]# sed -n ‘$p‘ awkfile
模式查找
root@localhost yj]# sed -n ‘/green/p‘ awkfile
[root@localhost yj]# sed -n ‘/\//p‘ awkfile
添加数据行
oot@localhost yj]# sed ‘1a qweqwewq213123213‘ awkfile
[root@localhost yj]# sed ‘1,2a qweqwewq213123213‘ awkfile //在第一行和第二行后面分别添加一行新数据
[root@localhost yj]# sed ‘1a qweqwewq213123\n21376567567‘ awkfile //添加多行数据
替代一行或多行
[root@localhost yj]# sed ‘1c 3123123‘ awkfile
[root@localhost yj]# sed ‘1,2c 3123123\nqqwqw‘ awkfile
直接编辑文件
[root@localhost yj]# sed -i ‘$a 123123‘ awkfile
对一行局部数据替换
[root@localhost yj]# sed -n ‘/green/p‘ awkfile | sed -i ‘s/green/aaaa/g‘ awkfile
[root@localhost yj]# sed -n ‘/aaaa/p‘ awkfile | sed -i ‘s/aaaa//g‘ awkfile
获取字符长度
[root@localhost yj]# name=yj
[root@localhost yj]# echo ${#name}
截取字符
${name:startpos:charlen}//startpos从0開始 charlen所取字符个数
[root@localhost yj]# echo ${name:1:4}
shell脚本语句
shell脚本文件
/bin/bash:shell脚本文件解释器
shell脚本文件特点:
1. .sh结尾
2.shell脚本文件能够直接运行
#!/bin/bash//shell脚本文件解释器
#ls -l //"#"凝视符号
shell脚本运行:
1.sh shell脚本文件
2. [root@localhost shell2]# chmod 755 sh1.sh //授予运行权限
[root@localhost shell2]# ./sh1.sh
shell 脚本变量定义
变量名=值//变量名通常是小写,与环境变量区分
输出变量值
echo $变量名
name=aaa
age=20
score=34.56
echo ‘$name‘ //输出$name
echo "$age"
echo ‘$s"co"re‘
echo "$n‘am‘e";
age=20;变量名一般用‘{}‘括起
echo "my age is ${age}ee"
read 从输入设备读取数据给变量
read 变量名1 变量名2//输入值是,空格区分值分配,假设变量已经分配完毕,最后全部的值赋给最后一个变量
shell脚本參数值
./sh1.sh abcf 121 466
位置參数获取值:
$0:运行文件名称
$1:获取第一个參数值
$2:获取第二个參数值
$@:获取全部的參数值
$*:获取全部的參数值
几个特殊符号:
$$:获取当前进程ID(pid)
$?:上一次命令运行成功与否(0:成功 非0:失败)
echo 输出控制
\n:换行
\t:tab
\c:下一个echo不换行输出
-e :针对 \n \t \c 特殊输出
``
[root@localhost shell2]# da=`date`
语句结构:
a.顺序
b.选择
if 条件
then
//满足条件运行语句
else
//不满足条件运行语句
fi
if 条件;then
//满足条件运行语句
else
//不满足条件运行语句
fi
if 条件;then
//满足条件运行语句
elif 条件
then
//满足条件运行语句
else
//不满足条件运行语句
fi
条件
条件格式:
1.test 比較
2.[ 比較 ]
比較的结果:$?
文件測试:
-d 測试文件是否是文件夹文件
-f 測试文件是否存在
-w 測试文件是否可写
-r 測试文件是否可读
-s 測试文件是否非空
-L 測试文件是否是符号连接
-x 測试文件是否可运行
[root@localhost shell2]# test -d aaaa
[root@localhost shell2]# echo $?
[root@localhost shell2]# [ -d aaaa ]
[root@localhost shell2]# echo $?
数字比較
-eq:相等
-ne:不等
-le:小于等于
-ge:大于等于
-lt:小于
-gt:大于
字符比較
= :相等
!=:不等
-z:空字符
-n:非空字符
-a:多个条件而且
-o:多个条件或者
case语句
case语法:
case var in
value1) 运行语句;;
value2) 运行语句;;
esac
[root@localhost shell2]# echo `expr $a + $b `
[root@localhost shell2]# echo $[$a+$b]
[root@localhost shell2]# echo $[a+b]
[root@localhost shell2]# let ‘a=1+2‘
[root@localhost shell2]# echo $a
练习:
case实现+-*/四则运算
c.循环
标签:UI value 提示信息 编译 fdsfs 通信 mount pac 转移
原文地址:http://www.cnblogs.com/cxchanpin/p/7186422.html