Linux Tips

原贴: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
 

你可能感兴趣的:(linux,正则表达式,String,shell,File,Integer)