-
序
-
linux中shell变量$#,$@,$0,$1,$2的含义解释:
-
变量说明:
-
$$
-
Shell本身的PID(ProcessID)
-
$!
-
Shell最后运行的后台Process的PID
-
$?
-
最后运行的命令的结束代码(返回值)
-
$-
-
使用Set命令设定的Flag一览
-
$*
-
所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
-
$@
-
所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
-
$#
-
添加到Shell的参数个数
-
$0
-
Shell本身的文件名
-
$1~$n
-
添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
-
awk
附录:
-
//如下表为cat文件/etc/passwd的文件内容:
-
root:x:0:0:root:/root:/bin/bash
-
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
-
bin:x:2:2:bin:/bin:/bin/sh
-
sys:x:3:3:sys:/dev:/bin/sh
-
sync:x:4:65534:sync:/bin:/bin/sync
-
games:x:5:60:games:/usr/games:/bin/sh
-
man:x:6:12:man:/var/cache/man:/bin/sh
-
lp:x:7:7:lp:/var/spool/lpd:/bin/sh
-
mail:x:8:8:mail:/var/mail:/bin/sh
-
news:x:9:9:news:/var/spool/news:/bin/sh
-
uucp:x:10:10:uucp:/var/spool/uucp:/bin/sh
-
proxy:x:13:13:proxy:/bin:/bin/sh
2.1常用操作:
2.1.1
-
awk '/^root/{print $0}' /etc/passwd
这个/^root/ 为正则表达式匹配以root开头的一行数据,匹配到了之后,然后交给后边的{print $0},这个执行打印操作,因为$0代表当前记录(也可以当前进程名,见序),后边的/etc/passwd为文件名称。
打印:root:x:0:0:root:/root:/bin/bash
2.1.2
-
awk 'BEGIN{FS=":"}/^root/{print $1,$NF}' /etc/passwd
这个跟上边的类似,不过开头就定义了一个FS分隔符以:分割,这个匹配之后打印$1和$NF,前者$1为所选单元的第一个参数,NF为列数,则$NF为所选单元的最后一个参数。
打印:root /bin/bash
2.1.3
-
awk 'BEGIN{FS=":"}{print NR,$1,$NF}' /etc/passwd
与上边类似,这个打印NR,代表各行,所以打印出来的效果是文件中所有的以$1和$NF为列的行。
2.1.4 数组相关函数
-
awk 'BEGIN{info="12 34 222 abc";split(info,a," ");print length(a);}
split的意思是按照空格分割info,然后把分割后的元素放在一个数组元素a中,此时a中包含四个元素。
-
sed
-
grep
-
参考文献
http://www.cnblogs.com/chengmo/archive/2013/01/17/2865479.html
http://www.cnblogs.com/fhefh/archive/2011/04/15/2017613.html
阅读(1304) | 评论(0) | 转发(0) |