GVKun编程网logo

Linux Shell编程 awk命令(shell awk命令详解)

1

本文将介绍LinuxShell编程awk命令的详细情况,特别是关于shellawk命令详解的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于awk命令

本文将介绍Linux Shell编程 awk命令的详细情况,特别是关于shell awk命令详解的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于awk命令、awk命令、awk编程语言详细介绍和实例、linux awk命令、Linux Bash Shell编程(三):重定向、多命令顺序、通配符、特殊符号的知识。

本文目录一览:

Linux Shell编程 awk命令(shell awk命令详解)

Linux Shell编程 awk命令(shell awk命令详解)

概述

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自标准输入(stdin)、一个或多个文件,或其它命令的输出。它支持用户自定义函数和动态正则表达式等先进功能,是linux/unix下的一个强大编程工具。它在命令行中使用,但更多是作为脚本来使用。awk有很多内建的功能,比如数组、函数等,这是它和C语言的相同之处,灵活性是awk最大的优势。

命令的基本格式如下:

[root@localhost ~]# awk ''条件1 {执行语句 1} 条件 2 {执行语句 2} …'' 文件名

在awk编程中,因为命令语句非常长,所以在输入格式时需要注意以下内容:

  • 多个条件{动作}可以用空格分隔,也可以用回车分隔。
  • 在一个动作中,如果需要执行多条命令,则需要用分隔,或用回车分隔。
  • 在awk中,变量的赋值与调用都不需要加入"$"符号。

条件(Pattern):
一般使用关系表达式作为条件。这些关系表达式非常多 。

条件类型 条 件 说 明
awk保留字 BEGIN 在 awk 程序一开始,尚未读取任何数据之前执行。BEGIN 后的动作只在程序开始时执行一次
awk保留字 END 在 awk 程序处理完所有数据,即将结束时执行?END 后的动作只在程序结束时执行一次
关系运算符 > 大于
< 小于
>= 大于等于
<= 小于等于
== 等于。用于判断两个值是否相等。如果是给变童赋值,则使用"=”
!= 不等于
A~B 判断字符串 A 中是否包含能匹配 B 表达式的子字符串
A!~B 判断字符串 A 中是否不包含能匹配 B 表达式的子字符串
正则表达式 /正则/ 如果在“//”中可以写入字符,则也可以支持正则表达式

awk常见的内置变量 

awk 内置变量

说明
$0 当前记录(作为单个变量)
$1~$n 当前记录的第n个字段,字段间由FS分隔
FS 输入字段分隔符, 默认为空白字符
OFS 输出字段分隔符, 默认为空白字符
RS 输入记录分隔符(输入换行符), 指定输入时的换行符
ORS 输出记录分隔符(输出换行符),输出时用指定符号代替换行符
NF 当前行的字段的个数(即当前行被分割成了几列),字段数量
NR 当前处理的文本行的行号 
FNR 各文件分别计数的行号
FILENAME 当前文件名
ARGC 命令行参数的个数
ARGV 数组,保存的是命令行所给定的各参数

awk命令示例

awk命令基本示例

列出 student.txt 文件的第二个字段和第六个字段,"$2"和"$6"分别代表第二个字段和第六个字段。

[root@localhost ~]# awk ''{printf $2 "\t" $6 "\n"}'' student.txt
#输出第二列和第六列的内容
Name Average
Liming 87.66
Sc 85.66
Gao 91.66

对于 awk 命令来说,只要分隔开,不管是空格还是制表符,都可以识别。 命令如下:

[root@localhost ~]#df -h | awk ''{print $1 "\t" $3}''
文件系统 已用
/dev/sda3 1.8G
tmpfs 0
/dev/sda1 26M
/dev/sr0 3.5G

在这两个例子中,如果使用 printf 动作,就必须在最后加入"\n",因为 printf 只能识别标准输出格式;如果我们不使用"\n",它就不会换行。而 print 动作则会在每次输出后自动换行,所以不用在最后加入"\n"。

awk使用条件的示例

BEGIN 是 awk 的保留字,是一种特殊的条件类型。BEGIN 的执行时机是"在 awk 程序一开始,尚未读取任何数据之前"。一旦 BEGIN 后的动作执行一次,当 awk 开始从文件中读入数据时,BEGIN 的条件就不再成立,所以 BEGIN 定义的动作只能被执行一次。例如:

[root@localhost ~]# awk ''BEGIN{printf "This is a transcript\n"}
{printf $2 "\t" $6 "\n"}'' student.txt
This is a transcript
Name Average
Liming 87.66
Sc 85.66
Gao 91.66

awk命令只要检测不到完整的单引号就不会执行,所以这条命令的换行不用加入"\",就是一行命令。首先使用BEGIN条件在读入文件数据前打印"这是一张成绩单"(只会执行一次),再打印文件的第二个字段和第六个字段。

END 是在 awk 程序处理完所有数据,即将结束时执行的。END 后的动作只在程序结束时执行一次。例如:

[root@localhost ~]# awk ''END{printf "The End \n"}
{printf $2 "\t" $6 "\n"}'' student.txt
Name Average
Liming 87.66
Sc 85.66
Gao 91.66
The End

 查看平均成绩大于等于 87 分的学员,就可以这样输入命令:

[root@localhost ~]# cat student.txt | grep -v Name |awk''$6 >= 87 {printf $2''\n"}''
Liming
Gao

使用cat输出文件内容,用grep取反包含"Name"的行
判断第六个字段(平均成绩)大于等于87分的行,如果判断式成立,则打印第2列学员名

查看Sc用户的平均成绩

[root@localhost ~]# awk''$2 -/Sc/ {printf $6 "\n"}'' student.txt
85.66

如果第二个字段中包含"Sc"字符,则打印第六个字段

在 awk 中,只有使用"//"包含的字符串,awk 命令才会査找。也就是说,字符串必须用"//"包含,awk 命令才能正确识别。

査看系统分区的使用情况而不想査看光盘和临时分区的使用情况时,可以只查询包含"sda数字"的行,并打印第一个字段和第五个字段

[root@localhost ~]# df -h | awk ''/sda[0-9]/ {printf $1 ''\t\ $5 "\n"}''
/dev/sda3 10%
/dev/sda1 15%

awk使用内置变量的示例

在 awk 中允许定义变量,允许使用运算符,允许使用流程控制语句和定义函数。这样就使得 awk 编程成了一门完整的程序语言,当然难度也比普通的命令要大得多。

创建文件

[root@localhost ~]# cat student.txt
ID Name PHP Linux MySQL Average
1 Liming 82 95 86 87.66
2 Sc 74 96 87 85.66
3 Gao 99 83 93 91.66

在 awk 中定义变量与调用变量的值。假设统计 PHP 成绩的总分:

[root@localhost ~]# awk''NR==2{php1 =$3}
NR==3{php2=$3}
NR==4{php3= $3;totle=php1+php2+php3;print "totle php is" totle}'' student.txt
totle php is 255

说明:

  • "NR==2{php1=$3}"(条件是NR==2,动作是php=$3) 是指如果输入数据是第二行(第一行是标题行),就把第二行的第三个字段的值赋予变量"php1"。
  • "NR==3{php2=$3}"是指如果输入数据是第三行,就把第三行的第三个字段的值赋予变量"php2"。NR==4{php3=$3;totle=php1+php2+php3;print"totle php is"totle}"("NR==4"是条件,后面{}中的都是动作)是指如果输入数是第四行,就把第四行的第三个字段的值赋予变量"php3";然后定义变量 totle 的值是"php1+php2+php3";最后输出"totle php is"关键字,后面加变量 totle 的值。

查看Linux 成绩大于 90 分的用户,命令如下:

[root@localhost ~]# awk'' NR>=2 {test=$4}
test>90 {printf $2" \n"}'' student.txt
Liming
Sc

先判断行号,如果大于2,就把第四个字段的值赋予变量test

再判断成绩,如果test的值大于90分,就打印好男人

 

awk命令

awk命令

awk命令

1)概念:一个强大的文本分析工具,awk把文件逐行地读入,以空白字符为默认分隔符将每行进行切片,然后对这些切片进行分析和处理。


2)说明:

	1)awk会针对文件(或数据流)中的每行文本执行程序脚本。
	2)每行文本中,数据切片是通过分隔符进行划分的,分隔符默认为:任意的空白字符(空格或制表符)。
	3)awk在读取一行文本时,会用分隔符将每行数据进行切片,并自动给一行中的每个数据切片分配一个变量:
		$0 代表整个文本行
		$1 代表文本行中的第1个数据切片
		$2 代表文本行中的第2个数据切片
		$n 代表文本行中的第n个数据切片
		
		$NF 代表文本行中最后的那个数据切片
			
			
3)格式:

	awk [参数] ''awk程序脚本'' filename

	
4)参数:

	-F 分隔符
	# awk -F '':'' 指定分隔符为冒号

	
5)函数:

	print:打印数据
		1)参数可以是变量、数值、字符串
		2)字符串必须用双引号包起来,参数用逗号分隔。
	
6)举例:

	awk ''{print $2$3$4$5}'' dumpFile1
	# 大括号{}	用于根据特定的模式(pattern)对一系列的指令(action)进行分组。

	grep getXxx catalina.out.2000-05-16 | grep delay | awk -F ''\\|\\|'' ''{print $3 "--" $9}''
	
	
7)常用:

	# 求最大值
	.. | awk ''BEGIN {max = 0} {if ($1 > max) max=$1} END {print "Max=", max}''
	# 求最小值
	.. | awk ''BEGIN {min = 1000000} {if ($1 < min) min=$1} END {print "Min=", min}''
	# 求平均值	注:NR表示awk开始执行程序后所读取数据的行数
	.. | awk ''{sum+=$1} END {print "Avg=", sum/NR}''

awk命令、awk编程语言详细介绍和实例

awk命令、awk编程语言详细介绍和实例

一,什么是awk

awk是linux下的一个命令,他对其他命令的输出,对文件的处理都十分强大,其实他更像一门编程语言,他可以自定义变量,有条件语句,有循环,有数组,有正则,有函数等。他读取输出,或者文件的方式是一行,一行的读,根据你给出的条件进行查找,并在找出来的行中进行操作,感觉他的设计思想,真的很简单,但是结合实际情况,具体操作起来就没有那么简单了。他有三种形势,awk,gawk,nawk,平时所说的awk其实就是gawk。

二,awk中的记录,域,分割符

当我们读取输出时,或者读取文件时,读取一行就是一个记录。记录分割符是默认是回车符,保存在RS,ORS中。
我们从记录中分割出我们要单词,或者是词组等,我们称他为域,域分割符,默认的是空格和TAB銉,保存在内建变
量ORS中。举个例子:
aaaa:bbbb:ccccccc
1111:2343:5t43343
上面有二行,这二行就是二个记录,每行后面的回车呢,就是记录分割符,里面冒号呢,就是域分割符,分割出来的,aaaa,1111这类东西就是域了。
awk -F: ''{print $1}'' testfile

三,awk的内建变量和运算符

1,变量

变 量 描述 $n 当前记录的第n个字段,字段间由 FS分隔。 $0 完整的输入记录。 ARGC 命 令行参数的数目。 ARGIND 命令行中当前文件的位置(从0开始算)。 ARGV 包 含命令行参数的数组。 CONVFMT 数字转换格式(默认值为%.6g) ENVIRON 环 境变量关联数组。 ERRNO 最后一个系统错误的描述。 FIELDWIDTHS 字 段宽度列表(用空格键分隔)。 FILENAME 当前文件名。 FNR 同 NR,但相对于当前文件。 FS 字段分隔符(默认是任何空格)。 IGNORECASE 如 果为真,则进行忽略大小写的匹配。 NF 当前记录中的字段数。 NR 当 前记录数。 OFMT 数字的输出格式(默认值是%.6g)。 OFS 输 出字段分隔符(默认值是一个空格)。 ORS 输出记录分隔符(默认值是一个换行符)。 RLENGTH 由 match函数所匹配的字符串的长度。 RS 记录分隔符(默认是一个换行符)。 RSTART 由 match函数所匹配的字符串的第一个位置。 SUBSEP 数组下标分隔符(默认值是\034)。

2,运算符

运算符 描述 = += -= *= /= %= ^= **= 赋值 ?: C条件表达式 || 逻 辑或 && 逻辑与 ~ ~! 匹 配正则表达式和不匹配正则表达式 < <= > >= != == 关 系运算符 空格 连接 + - 加,减 * / & 乘,除与求余 + - ! 一元加,减和逻辑非 ^ *** 求幂 ++ -- 增加或减少,作为前缀或后缀 $ 字 段引用 in 数组成员

四,awk的正则

匹配符 描述 \Y 匹配一个单词开头或者末尾的空字符串 \B 匹配单词内的空字符串 \< 匹配一个单词的开头的空字符串,锚定开始 \> 匹配一个单词的末尾的空字符串,锚定末尾 \W 匹配一个非字母数字组成的单词 \w 匹配一个字母数字组成的单词 \'' 匹配字符串末尾的一个空字符串 \‘ 匹配字符串开头的一个空字符串

五,awk的函数

1,字符串函数

函数名 描述 sub 匹配记录中最大、最靠左边的子字符串的正则表达式,并用替换字符串替换这些字符串。如果没有指定目标字符串就默认使用整个记录。替换只发生在第一次匹配的 时候 gsub 整个文档中进行匹配 index 返回子字符串第一次被匹配的位置,偏移量从位置1开始 substr 返回从位置1开始的子字符串,如果指定长度超过实际长度,就返回整个字符串 split 可按给定的分隔符把字符串分割为一个数组。如果分隔符没提供,则按当前FS值进行分割 length 返回记录的字符数 match 返回在字符串中正则表达式位置的索引,如果找不到指定的正则表达式则返回0。match函数会设置内建变量RSTART为字符串中子字符串的开始位 置,RLENGTH为到子字符串末尾的字符个数。substr可利于这些变量来截取字符串 toupper和tolower 可用于字符串大小间的转换,该功能只在gawk中有效

2,数学函数

函数名 返回值 atan2(x,y) y,x 范围内的余切 cos(x) 余弦函数 exp(x) 求 幂 int(x) 取整 log(x) 自然对 数 rand() 随机数 sin(x) 正弦 sqrt(x) 平 方根 srand(x) x是rand()函数的种子 int(x) 取 整,过程没有舍入 rand() 产生一个大于等于0而小于1的随机数

六,实例

学习awk的时候,做了一个例子,学东西,不要光看,光看是记不住东西的。光看的话,也许你知道怎么回事,真正实际操作,不是这儿有问题,就是那儿有问题。所以一定要动手亲自操作一下。

1,测试文件test

复制代码 代码如下:

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:daemon:/sbin:/bin/false
mail:x:8:12:mail:/var/spool/mail:/bin/false
ftp:x:14:11:ftp:/home/ftp:/bin/false
&nobody:$:99:99:nobody:/:/bin/false
zhangy:x:1000:100:,,,:/home/zhangy:/bin/bash
http:x:33:33::/srv/http:/bin/false
dbus:x:81:81:System message bus:/:/bin/false
hal:x:82:82:HAL daemon:/:/bin/false
mysql:x:89:89::/var/lib/mysql:/bin/false
aaa:x:1001:1001::/home/aaa:/bin/bash
ba:x:1002:1002::/home/zhangy:/bin/bash
test:x:1003:1003::/home/test:/bin/bash
@zhangying:*:1004:1004::/home/test:/bin/bash
policykit:x:102:1005:Po


例1:

复制代码 代码如下:

cat test | awk -F: ''{\
 if ($1 == "root"){\
 print $1;\
 }else if($1 == "bin"){\
 print $2;\
 }else{\
 print $3;\
 } \
}''

例2:

复制代码 代码如下:

awk ''{\
 for(i=0;i<NF;i++){\
 if ($i ~/^root/){\
 print $i;\
 }else if($i ~/zhangy/){\
 print $i;continue;\
 }else if($i ~/mysql/){\
 print $i;next;\
 }else if($i ~/^test/){\
 print $i;break;\
 } \
 }\
}'' test

例3:

复制代码 代码如下:

tail test | awk ''BEGIN{while(getline d){ split(d,test);for(i in test){\
 print test[i]\
}}}''

例4:

复制代码 代码如下:

ls -al /home/zhangy/mytest | awk ''BEGIN{while(getline d){ split(d,test);\
 print test[9] ;}
}''

例5:

复制代码 代码如下:

echo "32:34" |awk -F: ''{print "max = ",max($1,$2)}\
function max(one,two){
if(one > two){
 return one;
}else{
 return two;
}
}
''

例6:

复制代码 代码如下:

#awk ''BEGIN{print "what is your name"; getline name < "/dev/tty"}$1 ~name{print
#"found name on line" NR}END{print "see you" name}'' test
#awk ''{sub(/daemon/,"tankzhang");print}'' test
#awk ''{{sub(/zhangy/,"tankzhang");$1};print}'' test

#awk ''{{gsub(/zhangy/,"tankzhang");$1};print}'' test
#awk -F: ''{print index("zhangy",$1)}'' test
#awk -F: ''{print substr($1,1,2)}'' test
awk -F: ''{mat=match($1,/^[a-zA-Z]+$/);print mat,RSTART,RLENGTH}'' test

例7:

复制代码 代码如下:

cat test |awk -F: ''\
 NF != 7{\
printf("line %d,does not have 7 fields:%s\n",NR,$0)}\
$1 !~ /^[A-Za-z0-9]/{printf("line %d,non alpha and numeric user id:%s: %s\n",NR,$1,$0)}\
$2 == "*" {printf("lind %d,no password:%s\n",NR,$0)}''

您可能感兴趣的文章:
  • 详解Linx awk 入门教程
  • Linux中的awk数组的基本使用方法
  • 浅谈linux中sed命令和awk命令的使用
  • LINUX中详解AWK内建变量FS,NF,NR,RT,RS,ORS,OFS
  • Linux中 sed 和 awk的用法详解
  • 一天一个shell命令 linux文本内容操作系列-awk命令详解
  • linux正则表达式awk详解
  • awk正则表达式和内置函数的使用方法实例详解
  • Shell正则表达式之grep、sed、awk实操笔记
  • 马尔可夫链算法(markov算法)的awk、C++、C语言实现代码
  • Linux awk将文件某列按照逗号分隔的例子

linux awk命令

linux awk命令

    awk是一个数据处理工具。与sed处理整行数据相比。awk则比较倾向将一行分成数个“字段”来处理。

    awk通常运行的格式是这样的:

    awk ''条件类型1 {动作1} 条件类型2 {动作2} ...'' filename

    变量名的含义

    NR:当前的行号

    NF:当前行的字段总数

    FS:目前的分隔符,默认是空格

lhj@lhj-virtual-machine:~$ last -n 5|awk ''{print $1 "\t"  $2}''

    结果:

lhj	pts/0
lhj	tty7
(unknown	tty7
reboot	system
lhj	tty7

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk ''(FS=":")    {if($3<10){print $1 "\t" $3 }}''
或者
lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk -F":" ''{if($3<10){print $1 "\t" $3}}''

    第一条命令的结果:

root:x:0:0:root:/root:/bin/bash	
daemon	1
bin	2
sys	3
sync	4
games	5
man	6
lp	7
mail	8
news	9

 第二条命令的结果:

root	0
daemon	1
bin	2
sys	3
sync	4
games	5
man	6
lp	7
mail	8
news	9

    第一条命令的FS是域分隔符,读第一行的时候分隔符还是默认的空格,其作用是从第二行开始生效。不过可以在FS前面增加BEGIN关键字,告诉awk要从第一行开始生效

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk ''BEGIN {FS=":"}    {if($3<10){print $1 "\t" $3 }}''
root	0
daemon	1
bin	2
sys	3
sync	4
games	5
man	6
lp	7
mail	8
news	9

  awk还可以做列的运算,例如

lhj@lhj-virtual-machine:~$ cat /etc/passwd|awk ''BEGIN {FS=":"}    {if($3<10){s+=$3}} END {print s}''
45


Linux Bash Shell编程(三):重定向、多命令顺序、通配符、特殊符号

Linux Bash Shell编程(三):重定向、多命令顺序、通配符、特殊符号

Linux Bash Shell编程(三):重定向、多命令顺序、通配符、特殊符号

  上一节我们学习了Bash中的基本功能,相信经过前两节的学习,大家平时使用Bash的效率得到了一点提高。本节,我们将继续探索Bash特性,了解重定向、多命令顺序逻辑连接符、通配符和管道符以及其他特殊符号。

Linux Bash Shell(三)

1.重定向

重定向,主要分为输入重定向和输出重定向。顾名思义,它是对输入输出的方式重新进行确定,但何为“重”?这要先从标准输入输出说起。

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

显示器是计算机的标准输出和标准错误输出设备,程序\命令的输出都会在显示器上(及命令行下方和程序运行时打开的终端)

 输出重定向

输出重定向,是将原本在显示器上显示的输出内容写入文件中,而显示器中不显示。语法如下,

命令  > 文件 #将命令的执行输出(正确输出)以覆盖方式写入文件中
命令 >> 文件 #将命令的执行输出(正确输出)以追加方式写入文件中
命令 2> 文件 #将命令的错误输出(正确不会输出)以覆盖方式写入文件中
命令 2>> 文件 #将命令的错误输出(正确不会输出)以追加方式写入文件中

注意:输出方式 > 为覆盖方式(即将文件原有内容清空,重新写入内容);>> 为追加方式(即在文件末尾追加内容(换行)而不改变原内容)。下文中不再赘述

  • 输出重定向中的“输出”指的是正确输出,而不是错误返回值。也就是说,只有在命令\程序执行正确时才会输出内容,错误时完全不写入(若指定了一个新的文件名,则会创建文件,但文件中没有内容)
  • 错误输出中“2”与“>”之间没有空格,请注意

  同时保存输出和错误输出

命令 > 文件 2>&1 #无论是输出和错误输出,都保存进文件中。前面可以指定覆盖>和追加>>,后面2>&1不能修改
命令 &> 文件 #效果同上
命令 >>文件1 2>>文件2 #若正确,则输出到文件1;若错误,则输出到文件2
  • 第三种方法的输出方式选择比较容易弄错,两个输出方式符号若同为>>,则输出和错误输出都为追加输出,若两种有一个为>,则都会覆盖输出,请注意。

  丢弃输出

如果不想在程序执行的过程中有显示器输出又不想重定向写入文件,可以将输出重定向到/dev/null设备中,此设备为空设备(顾名思义),写入其中对系统没有任何影响

 输入重定向

这里以命令wc(字符串统计命令)为例

wc <string> #统计输入字符串的行数、单词数(按空格和行计)、字数
#输入以 ctrl+d 停止

这里手动输入并没有太大的实际作用,我们可以将其输入重定向到文件中,即可统计文件中的数据

#重定向语法 命令 < 文件
wc < test
#下面是实际操作
zheng@Kali:~$ wc < test
 5  7 31

2.多命令顺序执行和逻辑符

多命令执行符和逻辑符 格式 作用
命令1;命令2 多个命令顺序执行,命令之间没有逻辑关系
&& 命令1&&命令2 逻辑与 当命令1正确执行,命令2才会执行 当命令1执行不正确,命令2不会执行
|| 命令1||命令2 逻辑或 当命令1执行不正确,命令2才会执行 命令1正确执行,命令2不会执行

 一个问题

请大家思考一下,对于下面的三个命令,它们得到的返回值如何?

cd abc && echo "yes" || echo "no"
cd abc || echo "no" && echo "yes"
cd abc || cd abc && echo "no"
#当前目录不存在abc目录

 对于第一行命令,会输出“no”,第二条命令没有执行,看作未成功执行,前面未成功执行故第三条命令执行输出“no”;对于第二行命令,第一条命令不执行第二条命令可以执行并执行成功,故第三条命令也执行;而对于第三行命令,第一条执行错误,执行第二条,同样出现错误,第三条不会执行


3.管道符和通配符

 管道符

可以将前一个命令的正确输出作为第二个命令的操作对象(需要第一个命令有输出)

命令1 | 命令2 #语法
netstat -an | grep "ESTABLISHED" 
#例子,netstat命令显示所有连接,grep命令筛选出所有含"ESTABLISHED"的行
#作用为查看所有已建立的连接

 通配符

通配符 说明
? 匹配任意一个字符
* 匹配任意个字符(可为空)
[] 匹配括号中任意一个字符。[abc]表示匹配a或b或c
[-] 匹配中括号中任意一个字符,表示范围,[a-z]表示所有小写字母
[^] 不匹配中括号中所有字符[^0-9]表示非数字字符

通配符可以用于对文件的统一处理等。请大家建立几个文件,用实际操作的方法加深对通配符的印象。


4.其他特殊符号

特殊符号 解释
’ ’ 单引号,在单引号中的所有特殊符号都没有特殊意义(除,不是特殊符号),包括` $
“” 除\ $ `外的特殊符号都没有特殊意义(转义、调用变量的值、引用命令)
`` 反引号,其中内容是系统命令,在bash中会先执行它,推荐$()
# shell脚本中表示注释
$ 用于调用变量的值,$name
\ 转义符,跟在\之后的特殊符号没有特殊含义,转义符后的特别意义,见第一节echo转义符
  • 反引号中内容会被识别为系统命令,首先执行,再将输出覆盖在原来位置

实验

zheng@Kali:~$ echo ''$(date)''
$(date) #单引号消除了$引用的特殊含义
zheng@Kali:~$ echo "$(date)"
2020年 08月 08日 星期六 09:16:33 EDT #双引号不能消除$的特殊含义

下一节,我们将一起了解Bash中的变量相关知识

上一节 Linux Bash Shell编程(二):Bash基本功能(历史、补全、快捷键)

关于Linux Shell编程 awk命令shell awk命令详解的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于awk命令、awk命令、awk编程语言详细介绍和实例、linux awk命令、Linux Bash Shell编程(三):重定向、多命令顺序、通配符、特殊符号的相关知识,请在本站寻找。

本文标签: