Chinaunix首页 | 论坛 | 博客
  • 博客访问: 292990
  • 博文数量: 71
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 564
  • 用 户 组: 普通用户
  • 注册时间: 2014-07-20 18:15
个人简介

用编程改变大众。。。

文章分类

全部博文(71)

文章存档

2016年(7)

2015年(54)

2014年(10)

我的朋友

分类: LINUX

2015-04-14 10:35:30

1、 sed使用:

1)删除file文件中包含abc字符串所在行,结果写回file文件:

sed /abc/d  file   > file.tmp

mv -f  file.tmp   file

 

删除某一行或最后一行

sed  "3,5d"  file   删除3到5行

sed  "$d"  file  删除最后一行

  

2)将file文件中包含“abc”字符串改为“abcde”,结果写回file文件:

sed  /abc/c\abcde   file   >  file.tmp

mv  -f    file.tmp    file

 
3)查找打印file文件中包含“abc”字符串所在行:

sed  -n    '/abc/p'   file

 

 

2、逐行读取file文件中内容,并进行指定操作:

cat  file   |   while  read   clline

do

    name=' echo $clline |  awk -F:'{printf  $1}''   #输出该行第一个单词,以:为分隔符

     XX

    XX

done


3、死循环

 while :     # :空指令,也可认为与"true"等价

 do

     operation‐1

      ...

 done

 

4、case/esac语句

echo "Is it morning? Please answer yesor no."

read YES_OR_NO

case "$YES_OR_NO" in

yes|y|Yes|YES)

           echo "Good Morning!";;

[nN]*)

           echo "Good Afternoon!";;

*)

           echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."

           exit 1;;

esac

exit 0


5、if 参数详细说明:

文件比较运算符

  -efilename     如果 filename 存在,则为真            [ -e /var/log/syslog ]

  -dfilename     如果 filename 为目录,则为真          [ -d /tmp/mydir ]

  -f filename     如果 filename 为常规文件,则为真      [ -f /usr/bin/grep ]

  -Lfilename     如果 filename 为符号链接,则为真      [ -L /usr/bin/grep ]

  -rfilename     如果 filename 可读,则为真            [ -r /var/log/syslog ]

  -wfilename     如果 filename 可写,则为真            [ -w /var/mytmp.txt ]

  -xfilename     如果 filename 可执行,则为真          [ -L /usr/bin/grep ]

  filename1-nt filename2 如果 filename1 比 filename2 新,则为真 [ /tmp/install/etc/services-nt /etc/services ]

  filename1-ot filename2   如果 filename1 比 filename2 旧,则为真  [ /boot/bzImage -ot arch/i386/boot/bzImage ]

字符串比较运算符 (请注意引号的使用,这是防止空格扰乱代码的好方法)

  -zstring               如果 string 长度为零,则为真               [ -z $myvar ]

  -nstring               如果 string 长度非零,则为真        [ -n $myvar ]

  string1 =string2         如果 string1 与 string2 相同,则为真     [ $myvar = one two three ]

  string1 !=string2        如果 string1 与 string2 不同,则为真     [ $myvar != one two three ]

算术比较运算符

  num1 -eqnum2              等于         [ 3 -eq $mynum ]

  num1 -nenum2              不等于       [ 3 -ne $mynum ]

  num1 -ltnum2               小于        [ 3 -lt $mynum ]

  num1 -lenum2            小于或等于     [ 3 -le $mynum ]

  num1 -gtnum2             大于          [ 3 -gt $mynum ]

  num1 -genum2             大于或等于    [ 3 -ge $mynum ]

 

6、引号使用

1、双引号
使用双引号可引用除字符$、`、\外的任意字符或字符串。这些特殊字符分别为美元符号,反引号和反斜线,对s h e l l来说,它们有特殊意义。如果使用双引号将字符串赋给变量并反馈它,实际上与直接反馈变量并无差别。如果要查询包含空格的字符串,经常会用到双引号。
A、直接使用双引号打印字符:
echo "My Day" 
My Day
B、双引号中替换变量
$STR="My Day"
echo "$STR"
My Day

2、单引号
单引号与双引号类似,不同的是s h e l l会忽略任何引用值。换句话说,如果屏蔽了其特殊含义,会将引号里的所有字符,包括引号都作为一个字符串。
STATUS="well"
echo "I feel '$STATUS'"
I fell 'well'

3、反引号
反引号用于设置系统命令的输出到变量。s h e l l将反引号中的内容作为一个系统命令,并执行其内容。使用这种方法可以替换输出为一个变量。反引号可以与引号结合使用。
echo `date`
Sun Jan 13 15:23:34 GMT 2007

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