Chinaunix首页 | 论坛 | 博客
  • 博客访问: 21447
  • 博文数量: 7
  • 博客积分: 320
  • 博客等级: 一等列兵
  • 技术积分: 75
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-25 17:36
文章分类

全部博文(7)

文章存档

2010年(3)

2008年(4)

我的朋友
最近访客

分类:

2008-12-16 17:15:41

Bash_shell

第一行开始为:

 

#!/bin/bash

注释符    #

通配符    *,?,[,]

局部变量       name = “CLQ”

全局变量        export name=CLQ

提取变量值:  echo $name   ;   echo$PATH

读取用户输入:      read name 从用户输入中读取一行

参数:    echo $1 $2 $3  位置参数

             echo $*            所有位置参数

             echo$#              位置参数的个数

命令替换        name = `command`

                            name=$(command)

:             echo ”Today is `date`”

echo ”Today is $(date)”

 

运算符

           == 等于       =! 不等于        &&        ||          !       

一、条件语句

1:      if结构 (if开始 fi结束)

模式1      if command

then

                   block of statements

fi

模式2      if [[expression]]

                   then

                            block of statements

                   fi

模式3      if ((numeric expression))

                   Then

                   block of statements

                   else

                   block of statements

                   fi

2:      if/else 结构

模式1      if command

                   then

                   block of statemants

                   else

                   block of statemants

                   fi

3: if/else/else if

         if command

         then

                   block of statements

         elif command

         then

                   block of statements

         else if command

         then

                   block of statements

         else

                   block of statements

         fi

4:      cace 结构

         case variable_name in

         pattern1)

                   statements

                   ; ;

         Patern2)

                   ; ;

         Pattern3)

                   ; ;

         Esac

二、循环语句

         四种类型(whileuntiforselect

1  while command

         do

                   Block of statements

          Done

2  unti command

         do

                   Block of statements

          done

3for

         for variable in word_list

         do

                   block of statements

         done

4select

         select variable in word_list

         do

                   block of statements

         done

正则表达式与模式匹配

^       行首定位符号         /^love/ 匹配以love开头的行

$       行尾定位符              /love$/

.        匹配单个字符

*      匹配0或者多个字符

[]       匹配一组字符中的任意一个 [Ll]ove

[x-y] 匹配范文

[^]    匹配不在范围内的字符

\        转义字符

\<     行首定位符

\>     行尾定位符

 

grep

正则表达式有效

-b      在每一行前面加上其所有在的块号

-c      显示匹配到行的数目,而不显示行的内容

-h      不显示文件名

-i      比较字符时,忽略大小写

-l      只列出匹配行所在的文件名

-n    每一行前面加上他在文件中的行号

-v     反向查找,只显示不匹配的行

-w     把表达式作为词来查找

sed  命令与选项

a\     当前行后添加一行或多黄

c\      用新文本修改(替换)当前行中的文本

d       删除行

i\       在当前行之前插入文本

h       把模式空间里的内容复制到暂存缓冲区

H      把模式空间里的内容追加到暂存缓冲区

g       取出缓冲区的内容,将其复制到模式空间,覆盖该处原有内容

G      取出缓存区的内容,将其复制到模式空间,追加在原有内容后面

i       累出非打印列

p       打印所有列

n       输入下一输入行,并从下一条命令而不是第一套命令开始对器进行处理

q       结束或退出sed

r        从文件中读取输入行

!        对所选行以外的所有行应用命令

s       用一个字符串替换另一个.

替换标志

g       在行内进行全局替换

p       打印行

w      将行写入文件

x       交换暂存缓冲区与模式空间的内容

y       将字符转换为另一字符(不能对正则表达式使用y命令)

 

sed   实用范例

sed –n ‘/tihuan/p’ filename              把文件中所有 包含 tihuan 行打印在屏幕上

sed ‘1,3d’filename                              把文件钟的前3行删除,并且打印在屏幕上

sed ‘[Dd]ata/d’ filename                   把包含Datadata的行删除

sed –n ’15,20p’ filename                            打印第15-20

sed ‘1,10s/MT/mt/g’ filename        将第1~10行的所有MT换成mt

sed ‘/MT/!d’ filename                        删除不含MT的行

sed ‘/MT/5/8’ filename                      把所有包含MT的行的第一个5换为8

sed ‘s/….//’ filename                          删除每行的前4个字符

sed ‘s/…$//’ filename                         删除每行的后3个字符

sed ‘/east/,/west/s/North/Sounth/’ filename         east west这个范围内所有行出现的North更换为 Sounth

sed –n ‘/Time off/w timefile’ filename                       将所有包含time off的行 写入到timefile文件中

sed ‘s/\([Oo]ccur\)ence/\lrence/’ file                        

sed –n ‘l’ filename                                                           打印所有以 \nn显示非打印字符(nn是字符的十进制值)

 

 

AWK

Print函数转义序列

\b     退格

\f      换页

\n     换行

\r      回车

\t      制表符

\047          八进制的47,即单引号

\c      C代表任一 其他字符,例如”\”

Printf函数

c       字符

s       字符串

d       十进制整数

ld      十进制长整数

u       十进制无符号整数

lu      十进制无符号长整数

x       十六进制整数

lx      十六进制长整数

o       八进制

lo      八进制长

e       用科学计数法

f        浮点数

g       选用ef钟较短的一种形式

printf修饰符

-          左对齐修饰符

#       显示8进制证书时在前面加个0

+       显示使用d,e,fg转换的整数时,加上正负好

0           0而不是空白来填充所显示的值

: print(“The character is %c\n”,x)  假设x=’A’  输出:The character is A

 

操作(action)

操作是用{}花扩话分隔的语句

 

 

记录与字段

 

变量         $0     指代整条记录

RS    默认的内置变量 默认为回车

NR    每条记录的记录号,保存在NR

FS     保存输入字段分割符的值

-F      在命令行上改变FS的值,要使用-F选项

 

POSIX

[:alnum:]           字符数字字符

[:alpha0:]          字母字符

[:cntrl:]              控制字符

[:digit:]              数字字符

[:graph:]            非空白字符(非空格,控制字符等)

[:lower:]            小写字母

[:print:]              [:graph:]功能类似,但是包含空格字符

[:punct:]                    标点字符

[:space:]            所有的空白字符(换行符,空格,制表符)

[:upper:]            大写字母

[:xdigit:]            允许十六进制的数字(0-9a-fA-F)

 

比较表达式

关系运算符

<       <+     ==     !=     >=     >

~       与正则表达式匹配

!~     与正则表达式不匹配

 

条件表达式

条件表达式1 ? 表达式2 : 表达式3

相当于

if ($1 > $1)

         max=$1

else

         max=$2

逻辑运算符

&&   逻辑与

||     逻辑或

!        逻辑非

 

范围模式

awk ‘/Char1/,/Char2/’ filename

打印第一次出现char1 char2 之间的字符

 

变量

=       a = 5

+=     a += 5      -=      *=     /=     %=    ^=

 

nawk –v   允许在BEGIN语句中处理命令行变量

 

内置变量

 

AGRC                 命令行参数的数目

ARGIND            命令行中当前文件在ARGV内的索引(仅用于gawk

AGRV                 命令行参数构成的数值

CONVFMT        数字转换格式,默认为%.6g(仅用于gawk

ENVIRON          包含当前shell环境变量值的数组

ERRNO              当使用getline函数进行读操作或者使用close函数时,因重定向炒作而产生的系

FIELDWIDTHS  在分隔固定宽度的列表时,使用空白而不是FS进行分隔的字段宽度列表

FNR                    当前文件的记录数

FS                        输入字段分隔符,默认为空格

IGNORECASE   在正则表达式

NF                       当前记录中的字段数

NR                      目前的记录数

OFMT                 数字的输出格式

OFS                     输出字段分隔符

ORS                    输出纪录分隔符

RLENGTH                   match函数匹配到的字符串的长度

RS                       输入记录分隔符

RSTART              match函数匹配到的字符串的偏移量

RT                       纪录终结符,对与匹配字符或者RS指定的regexgawkRT设置到输入文本

SUBSEP              数组下标分隔符

 

BEGIN END 模式

 

重定向和管道

 

命令行编辑器

VI

 

ESC K+

上移历史清单

ESC J -

下移历史清单

G

移动到历史文件的第一行

5G

移动到第五行

/string

向上搜索字符串string

?

向下搜索字符串

h

在一行中左移

l

在一行中右移

b

向后移动一个词

ew

向前移动一个词

^0

移动到行首

vi编辑

 

a A

添加文本

i I

插入文本

dd dw x

删除文本到缓存

cc C

修改文本

u U

撤销

yy Y

移出(把一行复制到缓存)

p P

吧一处或删除的行放在该行下面或上面

r R

在一行中替换一个粗木或者任意大小的文本

 

 

 

 

 

别名 alias

1           创建别名 alias 123=456

2           删除别名 unalisa

 

变量

 

变量分为局部变量和环境变量

变量的命名 变量必须要以字母或下划线字符开头,其余的字符可以是字母、数字或者下划线。

变量的赋值 等号周围不能有任何空白符。为了给变量赋值,可以在等号后面加一个换行符。

1、  局部变量                    变量=

 

内置命令 1declare bash 2typesetKorn shell

两个内置变量可以用来创建变量

格式         declare     变量=

选项

-a      将变量当作一个数组。即,分配元素

-f       列出函数的名称和定义

-F      只列出函数名

-i       将变量设为整型

-r      将变量设置为只读

-x      将变量名称输入到子shell

 

环境变量设置 export

-- 标志着选项末尾,余下的参数被视为变量

-f       -值对被看作函数,而不是变量

-n      将一个全局(导出)变量转换成局部变量。之后该变量将不能被导出到子进程中。

-p      显示所有全局变量

 

复位变量

unset name

 

显示变量值

echo 命令

 

数组

declare - a 名字    -r参数表示只读

variable=(char char2 …………)

阅读(877) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~