我一直在搜索,我对这个awk命令有些怀疑。 任何人都可以帮忙做什么?
awk -F'\" ' '$2~/^5/' /home/app/log/app_log_20171202.out
我认为它搜索日志文件中的字符串,但我不理解它搜索的模式。
答案 0 :(得分:0)
您的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开头。
答案 1 :(得分:0)
这是我的猜测。
打破它。 awk -F'\'''$ 2~ / ^ 5 /'/ home / app / log / app_log_20171202.out
awk命令
-F'\“'use”,空格作为字段分隔符。
'$ 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/' -
答案 2 :(得分:0)
使用一些示例和简化代码进行说明:
$ 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 $