sh六角括号ne

君,已阅读到文档的结尾了呢~~
【精品】括号里最大能填几括号里最大能
扫扫二维码,随身浏览文档
手机或平板扫扫即可继续访问
【精品】括号里最大能填几
举报该文档为侵权文档。
举报该文档含有违规或不良信息。
反馈该文档无法正常浏览。
举报该文档为重复文档。
推荐理由:
将文档分享至:
分享完整地址
文档地址:
粘贴到BBS或博客
flash地址:
支持嵌入FLASH地址的网站使用
html代码:
&embed src='/DocinViewer-4.swf' width='100%' height='600' type=application/x-shockwave-flash ALLOWFULLSCREEN='true' ALLOWSCRIPTACCESS='always'&&/embed&
450px*300px480px*400px650px*490px
支持嵌入HTML代码的网站使用
您的内容已经提交成功
您所提交的内容需要审核后才能发布,请您等待!
3秒自动关闭窗口【shell】sh学习笔记汇总-php-电脑编程网【shell】sh学习笔记汇总作者:zhengdl126 和相关&&
本人的shell 学习笔记--共享一下中调用子程序sub fun{};引用& 或fun();shellfun(){...}引用funcat match | tr "[a-z]" "[A-Z]" 一定要加引号,才能变大写seq 1 100 显示 1 到100的数rev file 列倒叙sort -r 行倒叙 等价 tac filefold -w1 file 单字显示paste sort uniq cutsed awk 都是面向字符流的,都是从文本文件中一次一行的读取输入,并将输出直接送到标准输出端shell字符串比较判断是否为数字本文阐述:shell中整数比较方法及字符串的比较方法,如等于,不等于,大于,大于等于,小于,等等。cat match | tr "[a-z]" "[A-Z]" 一定要加引号,才能变大写seq 1 100 显示 1 到100的数rev file 列倒叙sort -r 行倒叙 等价 tac file二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt "$b" ]-le 小于等于,如:if [ "$a" -le "$b" ]& 小于(需要双括号),如:(("$a" & "$b"))&= 小于等于(需要双括号),如:(("$a" &=
"$b"))& 大于(需要双括号),如:(("$a" & "$b"))&= 大于等于(需要双括号),如:(("$a" &=
"$b"))字符串比较= 等于,如:if [ "$a" = "$b" ]== 等于,如:if [ "$a" == "$b" ],与=等价注意:==的功能在[[]]和[]中的行为是不同的,如下:1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true34 [ $a == z* ] # File globbing 和word splitting将会发生5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.但是file globbing并不是严格的,虽然绝大多数情况下结构比较像.!= 不等于,如:if [ "$a" != "$b" ]这个操作符将在[[]]结构中使用模式匹配.& 小于,在ASCII字母顺序下.如:if [[ "$a" & "$b" ]]if [ "$a" \& "$b" ]注意:在[]结构中"&"需要被转义.& 大于,在ASCII字母顺序下.如:if [[ "$a" & "$b" ]]if [ "$a" \& "$b" ]注意:在[]结构中"&"需要被转义.具体参考Example 26-11来查看这个操作符应用的例子.-z 字符串为"null".就是长度为0.-n 字符串不为"null"注意:使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.awk \'{print $2}\' class.txt | grep \'^[0-9.]\' &
resiptables 配置文件目录 /etc/sysconfig/iptables1.别名 alias,存放位置 $HOME/.bashrcalias ll=\'ls -lh\'2.print=helloworld echo ${print}3.变量:内存中一块存储单元本地变量:登陆登出生命周期内有效,只限制于本用户变量名=变量值set 查看LOCAL="TEST"echo $LOCAL设置变量名为只读,不能在更改,同是也不能在恢复:readonly 变量名,不能删除。环境变量:系统变量,用于所有用户,只有环境变量才能用于所有的子进程中,本地变量不可以。存放于/etc/profile .bash_profileexport 变量名=变量值env或者export查看unset 变量名 删除变量替换:用变量的值替换变量的名print=helloworldecho ${print}echo ${file1}+${file2}位置变量:$0 $1...$9$0:脚本的名字$1:脚本的第一变量$2:脚本的第二变量向脚本中使用位置参数:./test.sh a b c向系统命令传递参数find /root/ -name $1 -print./test.sh aa标准变量:bash默认的,可以在/etc/profile中定义EXINITHOMEIFS:设置分隔符,默认为空格 IFS=":"SHELOGNAMEMAIL 默认邮箱位置MAILPATH多个邮箱时可以设置TERM 显示终端类型PS1 当前shell目录格式PS1="WANGJIAN:"ps2 &pwd显示当前路径 SHELL 显示当前shellMANPATH TERMINFO特殊变量$# 变量的个数 $* 显示脚本全部参数(参数列表)$$脚本运行的当前id号$?显示前一个命令的运行状态 $!后台运行的最后一个进程id号#!/bin/bashecho "tesh.sh"echo "this is first variable locate:$1"echo "this is second variable locate:$2"echo "this is third variable locate:$3"shiftecho "count:$#"echo "all list:$*"echo "pid:$$"echo "status:$?"./tesh.sh a b cdeclare :设置或显示变量 -f只显示函数名export:创建环境变量 -p显示所有环境变量readonly:设置只读变量,不能修改删除unset:取消变量的定义。-f 删除只读变量shift:输入的位置变量改变位置 shift 表位置上移一个位置,shift 2 表上移动两个位置双引号"":引用字符或字符串除$ \ `单引号\'\':直接引用为字符或字符串反引号``: 作为系统命令执行 echo `echo wangjian` wangjian反斜杆\:转义特殊字符($*?)为普通字符运算符:~取反 &&
&&移位 &与(同1为1,否0)
|或(有1为1,全0为0) ^异或 逻辑运算符号&& ||运用运算符:$[]:表示对其中的表达式求值 echo $[2+8] echo $[3&4]
$[]等价于(())[base#n] n(base&n)表示基数从2到36的任何基数 echo [10#8+1]
结果为9let a+=3 a=a+3表达式优先级别[] *= || && | ^
& ==shell 的输入与输出echo-e 解析转义字符 echo -e "this is a bag \n\n\n"-n 回车不换行,默认换行 echo -n "this is a cat"转义字符(\c回车不换行 \f禁止 \t跳格相当tab \n回车换行)read:可以从键盘或文件的某一行文本中读入信息,并将其赋给一个变量。read varible1 varible2如果只指定了一个变量,那么read将会把所有的输入赋给改变量,直至遇到文件结束或回车。如果多个变量,就依次赋给。shell用空格作为变量之间的分隔符。echo -n "first name:"read firstnameecho -n "last name:"read lastnameecho -e "your first name :${firstname}\n"echo -e "your last name :${lastname}\n "read -t 5 variable 5秒钟超时read -p "Please enter your Username: " user -p prompt 提示语[root@ceshiji ~]#Please enter your Username:read -s -p "Please enter your Password: " pass -s charaters are not
echoed. 字符不回显示。指输入之后,不在回显cat:显示文件内容,创建文件,还可以用它来显示控制字符cat file1 file2 file3 同时显示cat file1 file2 file3&myfilecat -v .txt (-v 显示控制符)管道|:一个命令的输出传给一个命令的输入df -k|awk \'{print $1}\'|grep -v \'Filesystem\'tee:把输出的一个副本输送到标准输出,另一个副本拷贝到相应的文件中。tee files 在看见输出的同时,也将其存入一个文件。一般用于管道之后。tee -a files 追加到files中 (-a 表追加)who|tee who.out标准输入 0标准输出 1标准错误 2重定向:改变程序运行的输入来源和输出来源。& && &
&&command&&filename
2&&1command &filename&filename2cat file|sort 1 & sort.out 等价于cat file|sort
& sort.outpwd && file.txt&nullfile创建一个字节为零的文件 &文件名sort & filecat && aa.txt
&& CHINAITLAB
把CHINAITLAB结尾的内容都追加到aa.txt&HELEO ,I AM WANGJIAN&MY NAME IS $HOME&bye ...&CHINAITLAB重定向标准错误:grep \'test\' file.txt 2&error.txtgrep "test" test.txt&error.txt
2&&1 有没有错误都输入到error.txtexec用来替代当前的shell,并没有启动子shell,而是清楚现有shell环境,重新启动一个shellexec commandexec ./test.sh exec通常后接一个shell脚本文件描述符3-9可以使用 0输入 1输出 2错误exec 3 &&0 0&name.txt
此时不会关闭当前的shell控制流结构: if then eles case for until while break continueif thenelif thenelif thenelsefiif 条件1then语句elif 条件2 (条件1不成立,执行条件2)thenelse (条件1 2都不成立,执行else)语句fi (结束)if语句必须以单词fi终止if $x=thenechothenechofiif [ "10" -lt "12" ]man testecho -n "enter your name:"read NAMEif [ "$NAME" == ""];thenecho "you did not enter any information"elseecho "your name is $NAME"fiif cp myfile.bak myfile;thenecho "GOOD COPY"elseecho "basename $0 :error could not copy the files"
&&2case:多选择语句。如果匹配成功,执行匹配的命令case 值 in模式1)命令1;;模式2)命令2;;esac*表任意字符,?表任意单字符 []表范围echo -n "enter a number from 1 to 3;"read ANScase $ANS in1)echo "you select 1";;2)echo "you select 2";;3)echo "you select 3";;*)echo "basename $0 :this is not between 1 and 3"
&&2;;esaccase $1 inget|GET)create_dirget_config_file;;put|PUT)put_config_file;;stop|STOP)stop_server;;start|START)start_server;;restart|RESTART)restart_server;;*)echoecho "$Color_err Useage: ./Configure_squid.sh
get|put|stop|start|restart $Color_end"echoexit 1;;esacforfor 变量 in 列表do命令1命令2donefor语句 :提供循环执行使用格式:for var in values #var是变量 values是一组值do语句 #可以是多条语句done注意values的值可以全部列出,也可是通配的方式,也可以是某命令的输出值(如$(ls))。values的值可以是:1.列表 in 1 2 3 4 5 用空格隔开2.文件 in file1 file2 file33.变量 in $a 命令输出赋值4.命令 in `ls abc*`5.字符串表 in "orange red blue gray"5.特殊: 有时没有in 此时将命令行参数传入for loopdofind / -name $loop -printdone[root@localhost ~]# ./sh match/root/match[root@localhost ~]# cat sh#!/bin/bashfor loopdofind /root -name $loop -printdone#!/bin/sh#感谢作者:吴洪声for ((i = 1; i & 254; i++)) #必须用两个括号doarping -I eth0 60.191.82.$i -c 1donearp -a & mac_table当变量值在列表里,for循环即执行一次所有命令,使用变量名访问列表中的取值。命令可为任何有效的shell命令和语句。变量名为任意单词。in列表用法是可选的,如果不用它,for循环使用命令行的位置参数。in列表可以包含替换、字符串和文件名。for((i=1;i&=10;i=i+1))dotouch ar_$i;touch full_$i;for i in {1..100}do.......done#!/bin/shfor i in `seq 1 100`doecho $idonefor loop in 1 2 3 4doecho $loopdonefor loop in "orange red blue grey"doecho $loopdonefor i in $(ls); do du -sh $i; done | sort -n 查看当前目录的大小按小--大排列until 条件do命令1命令2...done条件可为任意测试条件,测试发生在循环末尾,因此循环至少执行一次.read lookuntil [ "$look" ]doecho "full"donesleep 1nohup ./test.sh &while 命令do命令1命令2...done$ cat "filelist.txt"name.txt□txtf□a□b□c□$ do echo "$file"; done &
"filelist.txt"name.txttxtfa□b□cecho "press ctrl+d ,stop"while echo -n "enter a file for you like:" ; read filmdoecho " Yeah ,${file} is a good film "donewhile read linedoecho $linedone&name.txtbreak [n]:跳出循环,如果是在一个嵌入循环里,可以指定n来跳出的循环个数continue:跳过循环步骤(本次循环)continue只能跳过本次循环。while :&无限循环,需要加入break跳出&while:doecho -n "enter any number [1...5]"read ANScase $ANS in1|2|3|4|5)echo "you enter a number between 1 and 5";;*)echo "wrong number ,bye."break;;esacdoneshift n :参数向左偏移n位。exit :退出系统wc -l 查看文件的行数getopts 多参数传递ls -R 文件夹 递归查看iostat 1umount -async:将缓冲区的内容写到磁盘r !date :读入日期r 文件 从文件中读入!pwd 执行命令 查看当前目录r !pwd 插入当前目录文本过滤:由一些字符要(元字符)组成,匹配字符串,过滤所需。元字符:^ :只匹配行首 $:只匹配行尾 *:匹配0个或多个此单字符[]:只匹配[]内字符,可以是一个单字符,也可以是字符列表。可以使用-表示[]内字符序列范围,入用[1-5]代替[12345]\:只用来屏蔽一个元字符的特殊含义 . 只匹配任意单字符,如...x..x..xpattern\{n\}:只用来匹配前面pattern出现次数,n为次数pattern\{n,\}:含义同上,但次数最少为npattern\{n,m\}:含义同上,但pattern出现次数在n与m之间.A\{2\}B:A出现两次 AABA\{4,\}B:A最少出现4次,AAAAB AAAAABA\{2,4\}B: A出现次数范围2-4次[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}\.[0-9]\{3\}匹配ip地址^:只允许在一行的开始匹配字符或单词.^ddrwxrwxrw- 匹配 -rwx--x--x 不匹配^...13351xc 匹配 338xcd 不匹配$:与^相反,只允许在行尾匹配字符或字符串trouble$^$ :匹配空行 ^.$:匹配包含一个字符的行*:匹配任意字符包括零个字符 如300*2 3002 匹配\:屏蔽一个特殊字符 如* $ .\*\.pas:匹配以*.pas结尾的所有字符或文件.[]:匹配一个范围或集合 ,用逗号分开. 用-表示范围[0-9] [a-z] [A-Z a-z 0-9] [S,s]find:用来查找具有某些特征的文件的命令.遍历大的文件系统时,一般放在后台运行.find path -options [-print -exec -ok]-print 输出到标准输出-exec 对匹配的文件执行该参数所给出的shell命令 形式为 command {} \; 注意{}和\;之间有空格find . -type f -exec ls -l {} \;find . -name "*.log" -mtime +5 rm {} \;有时参数太长或参数列溢出,此时要用xargs 类似与execfind / -perm -7 -print |xargs chmod o-wfind / -type f -print |xargs file-ok 和-exec作用相同,只不过-ok以一种更安全的方式运行.-options:-name文件名 文件名要引号find ./ -name "aa.txt" -printfind ./ -name "[A-Z]*" -print 大写开头的-perm文件权限find -perm 755 -print (路径没有表示为当前目录)-user文件的属主find `pwd` -user root -print-group 文件的属组find ./ -group root -print-atime ctime mtime -n +n -n
表示文件更改距现在n天以内(之内),+n表示文件更改时间距现在n天以前find 、-mtime -5 -print 修改在5天内的文件-size n[c] 查找文件长度为n块的文件,带有c表示文件长度以字节计算find . -size +1000000c -print 大于1000000c字节的文件find . -size -100 小于100块的文件-type 类型 b p c f(普通文件)-nouser -nogroup 无属主,属组的文件 ,删除用户时产生find / -nouser -printfind / -newer "myfile" !-newer "yourfile" -print
查找比文件myfile新比yourfile旧的文件-depth 在子目录中查找find . -name "aa.txt" -depth -printgrep 对文本文件进行模式查找grep "jeny" *.txtgrep -c (只输出匹配的行数)grep -c "aa" aa.txtgrep -n (显示匹配的行和行号)grep -i (忽略大小写)grep -v (反向查找)grep -h (查询多文件时不显示文件名)grep -H (显示文件名)grep -s (不显示不存在或无匹配文本的错误信息)grep "[0-9]" aa.txtgrep "^[^210]" myfile 不显示是210的行:包括2、1、0 打头的行grep "\?" aa.tet 查找?grep "[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}.[0-9]\{1,3\}"
qshengyang12.xml 过滤除ip地址grep "[0-9 A-Z]\{2\}:[0-9 A-Z]\{2\}:[0-9 A-Z]\{2\}:[0-9
A-Z]\{2\}:[0-9 A-Z]\{2\}:[0-9 A-Z]\{2\}"
qshengzheng12.xml过滤mac地址grep的命令类别[[:upper:]] 等价于[A-Z][[:alnum:]] 等价于[0-9 a-z A-Z][[:lower:]] 等价于[a-z][[:space:]] 等价于空格或tab键[[:digit:]] 等价于[0-9][[:alpha:]] 等价于[A-Z]service dhcpd start & /dev/null 不显示grep "5[[:digit:]][[:digit:]]" file 在file中查找500 到599nmap -sT ip地址arping ip 地址awk:是一种自解释的编程语言,可从文件或字符串中基于指定规则浏览和抽取信息。awk脚本由各种操作和模式组成模式和动作模式部分决定动作语句何时触发及触发事件。(BEGIN,END)动作对数据进行处理,放在大括号{} 内指明。(print)分隔符号、域和记录awk执行时,其浏览域标记为$1,$2....$n。这种方法称为域标识。$0为所有域。注意执行时不要混淆符号$和shell提示符$,它们是不同的。三种方式调用awk命令方式:awk [-F filed-spearator] \'command\' input-files 用单引号 -F
来指定分隔符如 -F :awk脚本:脚本文件awk命令插入一个单独文件: awk -f awk-script-file input-filesawk中的$跟shell中不含义不同 $0 是所有域,$1是第一个域 ,$2是第二个域....awk \'{print $0}\' score.txt 按行打印文件score.txt的各行.即打印所有域。awk -F : \'{print $0}\' score.txt默认分隔符是空格,可以用-F 来指定 本例子是:awk \'{print $1 "\t" $3}\' score.txt 打印显示第1和第3个域awk \'BEGIN {print "num ip/n-----"} {print $1 "\t" $4} END {print
"end-of-report"}\' ab.txt BEGIN和END定义了报头 num ip
打印显示第1和第4个域,最后显示end-of-reportnum ip-----64 172.0.0.1函数定义:shell允许将一组命名集或语句形成一个可用块,这些块称为shell函数格式:函数名(){命令1...}function 函数名(){....}定义函数#!/bin/bashfunction hello (){echo "hello ,today is `date`"return 1}echo "this is a function test"hello调用:直接输入函数名hello参数传递到函数中向函数传递参数就像在脚本中使用位置变量$1,$2,$3....$9#!/bin/bashfunction hello (){echo "hello ,$1 today is `date`"return 1}echo "this is a function test"hello wangjian显示: hello ,wangjian says: today is Fri Oct 12 18:05:25 csT
2007函数文件文件1:#!/bin/bash.hellofun #调入函数hellofunecho "now going to the function hello"helloecho "back from the function"文件2:#!/bin/bashfunction hello (){echo "hello, today is `date`"return 1}&文件名:创建大小为0的空文件查看载入函数:set文件1:#!/bin/bash.hellofun #调入函数hellofunsetecho "now going to the function hello"helloecho "back from the function"文件2:#!/bin/bashfunction hello (){echo "hello, today is `date`"return 1}删除函数:unset文件1:#!/bin/bash.hellofun #调入函数hellofununsetecho "now going to the function hello"helloecho "back from the function"文件2:#!/bin/bashfunction hello (){echo "hello, today is `date`"return 1}函数返回值:返回return的值 return 是何值就是何值。文件1:#!/bin/bash.hellofun #调入函数hellofununsetecho "now going to the function hello"helloecho $?echo "back from the function"文件2:#!/bin/bashfunction hello (){echo "hello, today is `date`"return 1}awk深入学习awk中特殊元字符 :+:表任意字符 ?:表单个字符匹配操作符:~:匹配 !~:表示不匹配 使用:~/匹配内容/cat score.txt|awk \'$0~/218.79.131.96/\'awk \'$0 !~/218.79.131.96/\' score.txtawk \'{if ($1=="218.79.131.96") print $0}\' score.txtman awksed介绍sed 选项 命令(\'\') 文件sed不与初始化文件打交道,它操作的只是一个拷贝,然后所有的改动如果没有重定向到一个为文件,将输出到屏幕。sed是一种重要的文本过滤工具,使用一行命令或者使用管道与grep与awk相结合非交互性文本流编辑。调用sed有三种方式使用sed命令行格式为:sed [选项] sed命令 输入文件 命令用\'\'刮起来使用sed 脚本文件,格式:sed [选项] -f sed 脚本文件 输入文件sed脚本文件 [选项] 输入文件不管是使用shell命令行方式或脚本文件方式,如果没有指定输入文件,sed从标准输入中接受输入,一般是键盘或重定向结果。sed命令选项n 不打印没匹配的c 下一命令是编辑命令f 正在调用sed脚本文件sed 在文件中查询文本的方式使用行号,可以是一个简单数字,或者是一个行号范围。使用正则表达式x 为一行号x,y 表示行号范围从x到y/pattern/ 查询包含模式的行/pattern/pattern/ 查询包含两个模式的行pattern/,x 在给定的行号上查询包含模式的行x,/pattern/ 通过行号和模式查询匹配行 (从x行匹配到/pattern结束)x,y! 查询不包含指定行号x和y的行基本sed编辑命令p:打印匹配行=:显示文件行号a\:在定位行号后附加新文本信息后面(分两行写)i\:在定位行号后插入新文本信息前(分两行写)d:删除定位行c\:用新文本替换定位文本s:使用替换模式替换相应模式r:从另一个文件中读文件w:写文本到一个文件q:第一个模式匹配完成后推出或立即推出l:显示与八进制ascii代码等价的控制字符{} 在定位行执行的命令组n 从另一个文件中读文本下一行,并附加在下一行g 将模式2粘贴到/pattern n/y 传送字符例子:sed \'2p\' aa.txt 打印第2行(其他也打印)sed -n \'2p\' aa.txt 只打印第二行sed -n \'1,4p\' aa.txt 只显示1-4行sed -n \'/los/p\' aa.txt 只显示 含有los的行sed -n \'4,/los/p\' aa.txt 只显示从第四行开始知道匹配到los为止的之间所有行sed -n \'/^$/=\' aa.txt 只显示空行sed -n -e \'/^$/p\' -e \'/^$/=\' aa.txt 只显示空行和空行行号 (-e
表示多命令同时执行)sed -n \'/beijing/a\/shenzhen/\' aa.txt
在beijing所在行的下一行追加shenzhen(命令从/shenzhen/\' aa.txt换行(不改变aa)输入)sed -n \'/beijing/i\/shenzhen/\' aa.txt
在beijing所在行的前一行插入shenzhen(命令从/shenzhen/\' aa.txt换行输入)不改变aa
,但可以重定到一个文件中改变原文件)sed -n \'/beijing/c\/shenzhen/\' aa.txt
将beijing所在行替换shenzhen(命令从/shenzhen/\' aa.txt换行输入)(不改变aa
,但可以重定到一个文件中改变原文件)sed \'1,2d\' aa.txt 删除1和2行sed \'s/beijing/shanghai/g\' aa.txtsed -n \'s/china/&hello/p\' aa.txt
在匹配到china字符后追加hellosed -n \'s/china/hello &/p\'
aa.txt在匹配到china字符前追加hellosed \'1r bb.txt\' aa.txt 在aa.txt的第一行下面插入bb.txtwenjiansed \'/china/q\' aa.txt 匹配到第一个china就退出sed -n \'/china/l\' aa.txt 以八进制显示info sed man sedsed \'/m/G\' 文件名搜索到回车加一个空行awk \'/from/{print}\' 名打印所有含有from的行合并与分隔sort 选项 files许多不同的域按不同的列顺序分类-c 测试文件是否已经分类-m合并两个分类文件-u删除所有复制行-o 存储sort 结果的输出文件名-t 域分隔符;用非空格或tab键分隔域+n n为域号,使用此域号开始分类n指定分类是域上的数字类项-r 比较求逆man sortsort -c aa.txtsort -u aa.txt 合并,有重复的行只显示第一个sort -r aa.txt 求逆,从下向上排序sort -t "." +2 aa.txt 分隔符为. 对第2个域进行ASCII码排序 域号从0 1 2 ..sort -t "." +2n aa.txt 分隔符为. 对第2个域进行数字排序 域号从0 1 2 ..uniq 选项 file从一个文本文件中去除或禁止重复的行-u 只先显示不重复的行-d 只显示有重复的数据行,每种重复行只显示一行-c 打印每一重复行出现次数-fn n为数字,前n个域被忽略,只比较后面man uniquniq -c file 查看重复次数(这里重复指的是相邻重复,隔行重复不算)uniq -d file 只显示有重复的数据行,每种重复行只显示一行(相邻重复,隔行重复不算)uniq -f 2 myfile.txt 前2个域被忽略,从后面的域比较uniq -dsort aa.txt|uniq -c 等价于 sort -u aa.txt
查看重复次数(这里重复指的是相邻重复和隔行重复)深入讨论awk条件操作符~:匹配正则表达式!~:不匹配正则表达式&&:and||:or!:notawk \'{if ($1~/^4/) print $0}\' file
如果文件file中第一个域匹配是4开头的行就全部显示awk \'{if ($1!~/^4/) print $0}\' file
如果文件file中第一个域匹配不是4开头的行就全部显示awk \'{if ($4~/^\[07\/jul\/2004/) print $0}\' file
打印是[07/jul/2004]开头的所有行awk内置变量ARGC 命令行参数个数ARGV 命令行参数排列ENVIRON 支持队列中系统环境变量的使用FILENAME awk 浏览的文件名FNR 浏览文件的记录数FS 设置输入域分隔符,等价于命令-F选项。NF 浏览文件域的个数NR 已度的记录数(行数)OFS 输出域分隔符ORS 输出记录分隔符RS 控制记录分隔符文件aa的内容为ab#slfjslkcd#fslkjfdf#123fjlseb#j9sqop#9sjtrawk -F \'#\' \'{print NR,NF,$0}\' aa 打印行数 域数 所有记录awk -F \'#\' \'{print ENVIRON["USER"],FILENAME, $0 ARG ARGV[0]}\'
aa 打印USER环境变量,文件名,所有记录,参数个数,第一个参数。字符串函数gsub(r,s) 在整个$0中用s替代rgsub(r,s,t)在整个t(域或记录)中s替换rindex(s,t)返回s中字符串t的第一位置length(s)返回s的长度match(s,r)测试s中是否包含匹配r字符串split(s,a,fs)用fs域上将s分成序列asprint(fmt,exp)返回经fmt格式化后的expsub(r,s) 用$0中最左边最长的子串代替ssubstr(s,p) 返回字符串s中从p开始的后部分substr(s,p,n) 返回字符串s中从p开始长度为n的后部分awk -F \'#\' \'{if(gsub("s","S",$1)) print $1}\' aa.txt
替换文件aa.txt的$1中s变成Sawk -F \'#\' \'{if(gsub("s","S")) print $0}\' aa.txt 默认是$0awk -F \'#\' \'{print(index($2,"s")) }\' aa.txt
打印$2中s字符所在的位置。(注意是字串在前)awk 转义字符\b 退格键\t tab键\f 走纸换页\ddd 八进制值\n 新行\c 任意其他特殊字符,例如\\为反斜线符号\r 回车符awk -F \'#\' \'{print(index($2,"s"),"\t" ,$2) }\' aa.txtprintf修饰符%c ASCII字符%d 整数%f 浮点数,例如(123.44)%e 浮点数,科学记数法%f 新行%g awk 决定使用哪种浮点数转换e或者f%o 八进制数%s 字符串%x 十六进制数awk 数组awk \'BEGIN {print split ("as*123",array2,"*")}\'./awk_arry.sh grade.txt############### main menu()###############curdate=`date "+%Y-%m-%d %T"`date "+%Y-%m-%d %T"显示当前日期和时间case $a in7)exit;;*)clearcontinue;;esac日志文件以时间为标识的日志文件以进程号为标识的临时文件ps -fe|grep "bash"|grep -v "grep"|awk \'{print $2}\'
可以用来搜索特定的进程号信号信号就是系统向脚本或命令发出信息。告知它们某个事件已经发生。kill -l 列出所有的信号kill发送信号给进程信号信号 信号名 含义1 SIGHUP 挂起或父进程被杀死 。也可以杀死进程2 SIGINT 来自键盘的中断信号常是ctrl+c3 SIGQUIT 从键盘退出9 SIGKILL 无 条件终止11 SIGSEGV 段(内存)冲突15 SIGTERM 软件终止(缺省杀进程)信号0为退出shell信号。为了发出信号0 ,只要从命令行键入exit,或在一个进程或命令行中使用ctrl+d即可所有信号都是通过kill传递给进程kill -s SIGKILL 进程号 等价于 kill -9 进程号kill -s SIGHUP 进程号 等价于 kill -1 进程号 杀死进程trap捕捉信号信号可以被应用程序或脚本捕获,并依据该信号(1 2 3
15)采取相应的行动。一些信号不能被捕捉。例如,如果一个命令收到了信号9,就无法再捕捉其他信号。捕捉到一个信号后,它可能会采取下面三种操作之一:1.不采取任何行动,由系统来进行处理、如kill -92.捕获该信号,但忽略它。3.捕获该信号,并采取相应的行动。trap \'exitprocess\' 2 3loop=0function exitprocess (){echo "you just hit &ctrl-c&, at
number $loop"echo "i will now exit"exit 1}while :doloop= $[$loop+1]sleep 1doneexit 1:退出整个程序trap可以使你的脚本中捕捉信号。命令形式为:trap name signal(s)(这里的signal可以是信号名或信号数字)其中,name是捕捉到信号以后所采取的一系列操作。实际中,name一般是一个专门用来处理所捕捉信号的函数。name需要用双引号引起来。signal 就是待捕捉的信号最常见的行动包括:1.清除临时文件。2.忽略改信号 (trap "" 2 3)3.询问用户是否终止该脚本的运行.evaleval命令将会首先扫描命令行进行所有的置换,然后再执行该命令.该命令适用于那些一次扫描无法实现其功能的变量.myfile="cat myfile" ; `eval $myfile`loggerlogger命令向/var/log/message文件发送消息。logger命令的一般形式为:logger -p -i message-p 为优先级,这里只涉及到提示用户注意的优先级。这也是缺省值-i 在每个消息中记录发送消息的进程号。syslogd进程logger -p 19 -i "china beijing haidian"运行级别目录 (/etc/rcN.d) N:0-6当前运行级别 (runlevel)运行级别目录文件格式(SXXscript,KXXscript)其中s开头的文件是启用,k开头的文件是禁用的。所有文件都是链接文件。运行级别控制文件(/etc/inittab)修改inittab文件启动脚本分析(start|stop|restart)cat /etc/init.d/crond启动脚本service server start/stop/restart2&&1 错误的信息也输出到标准输出写的脚本放在init.d中在rc3.d添加软链接。
相关资料:|||||||【shell】sh学习笔记汇总来源网络,如有侵权请告知,即处理!编程Tags:                &                    

我要回帖

更多关于 大括号 的文章

 

随机推荐