网络安全--awk总结

目录

一、谈谈我对awk的理解

二、常用命令总结

三、awk变量

四、举例说明


一、谈谈我对awk的理解

awk是一种用于文本处理和数据提取的命令行工具,它通过模式匹配和操作来处理输入数据并生成输出。

二、常用命令总结

  • -F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:

  • -v var=value:赋值一个用户定义变量,将外部变量传递给awk

  • -f scripfile:从脚本文件中读取awk命令

三、awk变量

  • FS输入字段分隔符默认为空白字符

  • OFS输出字段分隔符,默认为空白字符

  • RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效

  • ORS :输出记录分隔符,输出时用指定符号代替换行符

  • NF :字段数量,共有多少字段, $NF引用最后一列,$(NF-1)引用倒数第2列

  • NR行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始

  • FNR :各文件分别计数, 行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始

  • FILENAME :当前文件名

  • ARGC :命令行参数的个数

  • ARGV :数组,保存的是命令行所给定的各参数,查看参数

四、举例说明

1.这里我们创建了名为demo.txt文件,我们使用:为分隔符分别取出$1和$2

[root@along ~]# cat demo.txt
hello:world
linux:redhat:lalala:hahaha
along:love:youou
[root@along ~]# awk -v FS=':' '{print $1,$2}' demo.txt  #FS指定输入分隔符
hello world
linux redhat
along love

2.

awk -v FS=':' -v ORS='---' '{print $1,$2}' demo.txt

  • 使用参数-v FS=':',将输入字段分隔符(Field Separator)设置为冒号(:)。
  • 使用参数-v ORS='---',将输出记录分隔符(Output Record Separator)设置为三个连续的短横线(---)。
  • 对于每一行数据,将该行的第一个字段和第二个字段打印出来,字段之间用空格分隔,行之间用三个短横线(---)分隔。

3.打印倒数第二个单词

awk -F: '{print $(NF-1)}' demo.txt

网络安全--awk总结_第1张图片

 4.按行号打印出

awk '{print NR}' demo.txt

网络安全--awk总结_第2张图片

5.总共有几行

awk END'{print NR}' demo.txt

 

6.

 awk '{print FNR}' demo.txt

 网络安全--awk总结_第3张图片

  • {print FNR}:这是操作部分,指定了要执行的动作。FNR 是一个内置变量,表示当前文件的相对行号(即从1开始递增的行号)。{print FNR} 表示打印当前文件的相对行号。

  • demo.txt:这是输入文件的名称,awk会逐行读取这个文件的内容并进行处理。它会从文件的第一行开始逐行打印出相对行号。

7.循环按行数打印文件名

awk '{print FILENAME}' demo.txt

网络安全--awk总结_第4张图片

8.

awk 'BEGIN {print ARGC}' demo.txt

 

  • 'BEGIN {print ARGC}':这是一个特殊的部分,称为 BEGIN 块,它在处理任何文件内容之前执行。在这个 BEGIN 块中,我们使用内置变量 ARGC,它表示传递给 awk 命令的参数个数。在这个例子中,awk 命令被传递了两个参数:命令本身和 demo.txt 文件。

  • demo.txt:这是输入文件的名称,但在 BEGIN 块中,实际上还没有开始处理文件内容,所以这里的文件名并不会被用于处理文件。

9.

awk 'BEGIN {print ARGV[0]}' demo.txt
  • 'BEGIN {print ARGV[0]}':这是一个特殊的部分,称为 BEGIN 块,它在处理任何文件内容之前执行。在这个 BEGIN 块中,我们使用内置数组变量 ARGV,它包含传递给 awk 命令的所有参数。ARGV[0] 表示传递给 awk 命令的第一个参数,即命令本身。

  • awkdemoawkdemo1:这是命令行中传递给 awk 命令的参数。在 BEGIN 块中,实际上还没有开始处理文件内容,所以这里的文件名并不会被用于处理文件。

你可能感兴趣的:(linux,运维,服务器)