繁体   English   中英

AWK UNIX命令

[英]AWK unix command

我一直在搜索,对此awk命令有一些疑问。 任何人都可以帮忙做什么?

awk -F'\" ' '$2~/^5/' /home/app/log/app_log_20171202.out

我认为它在日志文件中搜索字符串,但是我不理解它搜索的模式。

您的awk行执行以下操作:

awk -F'\\" ' '$2~/^5/'

  • -F'\\" ' :将字段定界符设置为'" ' (带空格的双引号)
  • $2~/^5/是写($2~/^5/)1的简写形式,甚至是($2~/^5/){print $0}的简写形式,应读为if ($2~/^5/) is true then print $0
  • 正则表达式为$2~/^5/并指出如果第二个带有定界符" (请参见-F'\\" )的字段以5( /^5/ )开头,则返回true。

简而言之,您的命令将打印所有用引号引起来的第一个字符串以5开头的行。

这是我的猜测。

分解。 awk -F'\\“''$ 2〜/ ^ 5 /'/home/app/log/app_log_20171202.out

awk命令

-F'\\“'使用”和一个空格作为字段分隔符。

'$ 2〜/ ^ 5 /'awk系列模式和要应用于输入文件的操作

$ 2返回第二项

〜匹配要遵循的模式

/ ^ 5 /匹配一个5字符

/home/app/log/app_log_20171202.out输入文件。

以下是一些使用echo和管道而不是输入文件的示例。

这将返回该行。

echo "VM\" 5ID: 12345" | awk -F'\" ' '$2~/^5/' -
VM" 5ID: 12345

这些什么都不返回。

echo "VM\" 4ID: 12345" | awk -F'\" ' '$2~/^5/' -
echo "VM\"5ID: 12345" | awk -F'\" ' '$2~/^5/' -

使用一些示例和简化的代码进行解释:

$ cat abc
contains 2 " contains 5 " contains 10 " contains 100
$

打印第二个字段

$ awk -F'\" ' '{print $2 }' abc
contains 5

如果第二个字段包含5,则打印第二个字段

$ awk -F'\" ' '$2 ~ /5/ { print $2 }' abc        
contains 5

如果第二个字段以5开头,则打印该字段

$ awk -F'\" ' '$2 ~ /^5/ { print $2 }' abc
$

修改文件以第二个字段以数字5开头

$ cat abc
contains 2 " 5 is the first number " contains 10 " contains 100
$ awk -F'\" ' '$2 ~ /^5/ { print $2 }' abc
5 is the first number 
$

如果第二个字段以数字5开头,则打印整行

$ awk -F'\" ' '$2 ~ /^5/ { print }' abc   
contains 2 " 5 is the first number " contains 10 " contains 100
$

同上

$ awk -F'\" ' '$2 ~ /^5/' abc          
contains 2 " 5 is the first number " contains 10 " contains 100
$

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM