匹配操作符~(awk)

匹配操作符~(awk)

Content #

匹配操作符(~)能将正则表达式限制在记录的特定数据字段。你可以指定匹配操作符、数据字段变量以及要匹配的正则表达式:

$1 ~ /^data/

$1变量代表记录中的第一个数据字段。该表达式会过滤出第一个数据字段以文本 data开头的所有记录。下面例子演示了在gawk脚本中使用匹配操作符的情况: $ gawk ‘BEGIN{FS=","} $2 ~ /^data2/{print $0}’ data1 data21,data22,data23,data24,data25 $ 匹配操作符使用正则表达式/^data2/来比较第二个数据字段,该正则表达式指明这个数据字段要以文本data2开头。这可是个强大的工具,gawk脚本中经常用它在文件中搜索特定的数据元素: $ gawk -F: ‘$1 ~ /rich/{print $1,$NF}’ /etc/passwd rich /bin/bash $ 这个例子会在第一个数据字段中查找文本rich。如果匹配该模式,则打印该记录的第一个数据字段和最后一个数据字段。

也可以用!符号来排除正则表达式的匹配: $1 !~ expression 如果在记录中没有找到匹配正则表达式的文本,就对该记录执行脚本: $ gawk -F: ‘$1 !~ /rich/{print $1,$NF}’ /etc/passwd root /bin/bash daemon /bin/nologin bin /bin/nologin sys /bin/nologin — output truncated — $ 在这个例子中,gawk脚本会打印/etc/passwd文件中用户名不是rich的那些用户名和登录shell。

From #

Linux命令行与shell脚本编程大全