[英]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.