shell里面的$*,$@,$#,$0,$1...$9

来源:互联网 发布:淘宝崔天琪同款手环 编辑:程序博客网 时间:2024/06/08 00:36
shell里面的$*,$@,$#,$0,$1...$9表示什么意思
脚本名称叫test.sh 入参三个: 1 2 3
运行test.sh 1 2 3后
$*为"1 2 3"(一起被引号包住)
$@为"1" "2" "3"(分别被包住)
$#为3(参数数量)
$0文件名
$1...$9:参数1...参数9
使用方法:
awk '{pattern + action}' {filenames}
尽管操作可能会很复杂,但语法总是这样,其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。


awk语言的最基本功能是在文件或者字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作。完整的awk脚本通常用来格式化文本文件中的信息。


通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本。
$0则表示所有域,$1表示第一个域,$n表示第n个域。


搜索/etc/passwd有root关键字的所有行:

#awk -F: '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash


-F指定域分隔符为':'。


awk内置变量
ARGC               命令行参数个数
ARGV               命令行参数排列
ENVIRON            支持队列中系统环境变量的使用
FILENAME           awk浏览的文件名
FNR                浏览文件的记录数
FS                 设置输入域分隔符,等价于命令行 -F选项
NF                 浏览记录的域的个数
NR                 已读的记录数
OFS                输出域分隔符
ORS                输出记录分隔符
RS                 控制记录分隔符
原创粉丝点击