原贴:http://blog.chinaunix.net/u/8780/showart_166786.html
Linux Tips |
 |
1 Shell脚本参数 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数。与位置变量不同,此选项参数可超过9个 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的进程ID号 $@ 与$#相同,但是使用时加引号,并在引号中返回每个参数 $- 显示shell使用的当前选项,与set命令功能相同 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。
2 awk的使用... 精确匹配第三个字符为48的行 awk '{ if($3~/^48$/ ) print $0}' test.txt //注意这里尽管用正则表达式来匹配,但不能用//^48/$/,而是可以直接使用^48$ 如果是匹配第三个字符包含48的行 awk '{ if($3~/48/) print $0}' test.txt awk中正则表达式中使用.来表示单个字符,但是shell中使用?匹配单个字符。 用|表示1或2的关系,但只取一个,使用|时,必须使用圆括号括起来,如 awk '$0~/(Yellow|Brown)/' test.txt 用&&表示与的关系,&&的两天最好也要用括号括起来,如 awk '{ if($1=="fist" && $2=="second") print $0}' test.txt 用||表示或的关系,可以取一个,也可以取两个 awk '{ if ($4=="forth" || $5=="fifth") print $0 }' test.txt 同时匹配两个条件的使用: awk '条件1 && 条件2 { print $xxx }'
3 关于if语句的test EXPRESSION1 -a EXPRESSION2 两条语句都为true EXPRESSION1 -o EXPRESSION2 两条语句任意一条为true [-n] STRING String串非零 -z STRING 串的长度为0 STRING1 = STRING2 两个串相等 STRING1 != STRING2 两个串不相等 INTEGER1 -eq INTEGER2 两个整数相同 equal INTEGER1 -ge INTEGER2 INTEGER1大于等于INTEGER2 greater equal INTEGER1 -gt INTEGER2 INTEGER1大于INTEGER2 greater than INTEGER1 -le INTEGER2 INTEGER1小于等于INTEGER2 less equal INTEGER1 -lt INTEGER2 INTEGER1小于INTEGER2 less than INTEGER1 -ne INTEGER2 INTEGER1不等于INTEGER2 not equal FILE1 -ef FILE2 file1跟file2有同个设备和inode号 equal file FILE1 -nt FILE2 file1比file2新 newer than FILE1 -ot FILE2 file1比file2老 older than -b file file存在也是块设备 block -c file file存在且是字符设备 character -d file file存在且是文件夹 directory -e file file存在 exist -f file file存在并是个普通文件 -g file file存在并是SGID -h file file存在并是个符号链接 -G file file存在并被有效的组拥有 -k file file存在并有s位 -L file file存在并是个符号链接 -O file file存在并被有效用户拥有 -p file file存在并是个named pipe -r file file存在并可读 -s file file存在并不为0(greater than 0) -S file file存在并是个socket -t [FD] 文件描述FD ????? 这个主要是为了测试shell是否是交互式... -u file file存在并且s位设置过 -w file file存在并可写 -x file file存在并可执行
4 关于sed sed -n '2p' test.txt //打印test.txt中第二行的内容 sed -n '1,3p' test.txt //打印test.txt中第一到第三行的内容 单引号有无无所谓,","表示行到行 sed -n '4,/The/p' test.txt //打印第四行中匹配The sed -n '1,$p' quote.txt //打印整个文件 sed 's/a/b/8' //替换每行中匹配第8a,改为b sed = filename | sed 'N;s//n/:/' filename 正则表达式: 字符类 描述 [:alnum:] 字母数字 [a-z A-Z 0-9] [:alpha:] 字母 [a-z A-Z] [:blank:] 空格或制表键 [:cntrl:] 任何控制字符 [:digit:] 数字 [0-9] [:graph:] 任何可视字符(无空格) [:lower:] 小写 [a-z] [:print:] 非控制字符 [:punct:] 标点字符 [:space:] 空格 [:upper:] 大写 [A-Z] [:xdigit:] 十六进制数字 [0-9 a-f A-F] 利用sed来定位 xx为一行号,如1 x,y 表示行号范围从x到y,如2,5表示从第2行到第5行 /pattern/ 查询包含模式的行。例如/ disk /或/[a-z]/ /pattern/pattern/ 查询包含两个模式的行。例如/ disk/disks/ pattern/,x 在给定行号上查询包含模式的行。如/ ribbon / , 3 x,/pattern/ 通过行号和模式查询匹配行。3 . / vdu / x,y! 查询不包含指定行号x和y的行。1 , 2 !
5 修改网卡MAC地址: #ifconfig eth0 down #ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #ifconfig eth0 up
| |