当我们揭开awk的功能部分,该系列中的这一部分,我们将通过awk的内置变量的概念走。 有两种类型的您可以在awk中使用变量,这些都是; 用户定义的变量,这是我们覆盖8部分和内置变量。
Awk内置变量示例
内置变量在awk中已定义的值,但我们也可以仔细地改变这些值,内置的变量包括:
-
FILENAME
:当前输入文件名(不改变变量名) -
FR
:当前输入行的数量(即输入线1,2,3 ...等,不改变变量名) -
NF
:在当前输入行字段数(不改变变量名) -
OFS
:输出域 -
FS
:输入分隔符 -
ORS
:输出记录分隔符 -
RS
:输入记录分隔符
让我们继续说明上面的一些Awk内置变量的使用:
读取当前输入文件的文件名,则可以使用FILENAME
的内置变量,如下所示:
$ awk ' { print FILENAME } ' ~/domains.txt
Awk FILENAME变数
你会发现,文件被打印出来每个输入线,即awk中的默认行为当您使用FILENAME
内置变量。
使用NR
计数在输入文件的行(记录)的数量,请记住,这也算空行,我们将在下面的例子中看到的。
当我们查看文件domains.txt使用cat命令 ,它包含14行文本和空2行:
$ cat ~/domains.txt
打印文件内容
$ awk ' END { print "Number of records in file is: ", NR } ' ~/domains.txt
Awk计数行数
要计算记录或行中的字段数,我们使用NR内置变量如下:
$ cat ~/names.txt
列出文件内容
$ awk '{ print "Record:",NR,"has",NF,"fields" ; }' ~/names.txt
Awk计数文件中的字段数
接下来,你还可以指定使用的输入字段分隔符FS
内置变量,它定义awk中如何将输入行到各个领域。
为默认值FS
是空间和标签 ,但我们可以的值更改FS
到会指导awk来划分相应的线路输入任何字符。
有两种方法可以做到这一点:
- 一种方法是使用在FS内置变量
- 第二个是要调用的-F awk的选项
考虑一个Linux系统上的文件/ etc / passwd文件 ,在这个文件中的字段使用划分:
性格,所以我们可以作为新的输入分隔符指定它,当我们想筛选出某些字段,如下面的例子:
我们可以使用-F
如下选项:
$ awk -F':' '{ print $1, $4 ;}' /etc/passwd
Awk在密码文件中过滤字段
或者,我们也可以利用的FS
内置如下变量:
$ awk ' BEGIN { FS=“:” ; } { print $1, $4 ; } ' /etc/passwd
使用Awk过滤文件中的字段
指定输出字段分隔符,使用OFS
内置变量,它定义了如何在输出字段将使用我们在下面的例子中使用的字符被分离:
$ awk -F':' ' BEGIN { OFS="==>" ;} { print $1, $4 ;}' /etc/passwd
在文件中向字段添加分隔符
在本部10,我们已经探索使用awk的内置变量,配有预定义值的想法。 但我们也可以改变这些价值观,但是,除非你知道你在做什么,有足够的了解,否则不建议这样做。
在此之后,我们将发展为包括我们如何使用shell变量在awk命令操作,因此,保持连接到youcl。