Zgrep 和 sed 不匹配包含减号 (-) 的行
Zgrep and sed do not match lines that contain minus (-) sign
我是 bash 的新手,我正在尝试使用 zgrep
和 sed
来过滤一些日志并只获取所需的信息。
这是我在 myfile.log.gz
中的日志
2014/11/22 00:53:15.310 @ 5 @ mex.MIP.utils.CATUtils @ About to start ASYNC Track to CAT of KPI Unsubscription for [msisdn=+528341114903,trackExecutionKey=20140713U5cN61405274548493MEX*5803*40]
2014/11/22 00:53:57.725 @ 5 @ mex.MIP.utils.CATUtils @ About to start ASYNC Track to CAT of KPI Unsubscription for [msisdn=+522281344058,trackExecutionKey=20140904fG6W11409859320970MEX*5925*-1]
这是我正在使用的 zgrep 命令。
zgrep "ASYNC.*Unsubscription.*track" myfile.log.gz | sed -e '/\-/s/@.*5.*CATUtils.*trackExecutionKey=//g' | less
这是预期输出
2014/11/22 00:53:15.310 20140713U5cN61405274548493MEX*5803*40]
2014/11/22 00:53:57.725 20140904fG6W11409859320970MEX*5925*-1]
这是实际的我得到
2014/11/22 00:53:15.310 @ 5 @ mex.MIP.utils.CATUtils @ About to start ASYNC Track to CAT of KPI Unsubscription for [msisdn=+528341114903,trackExecutionKey=20140713U5cN61405274548493MEX*5803*40]
2014/11/22 00:53:57.725 20140904fG6W11409859320970MEX*5925*-1]
如您所见,第一行没有按预期替换。为什么不呢?
您告诉 sed
仅对包含 -
的行进行操作(不需要反斜杠)。
/-/ s...
参见 man sed
中的 "Addresses"。
未处理的行不包含它,所以sed不改变它。
我是 bash 的新手,我正在尝试使用 zgrep
和 sed
来过滤一些日志并只获取所需的信息。
这是我在 myfile.log.gz
中的日志2014/11/22 00:53:15.310 @ 5 @ mex.MIP.utils.CATUtils @ About to start ASYNC Track to CAT of KPI Unsubscription for [msisdn=+528341114903,trackExecutionKey=20140713U5cN61405274548493MEX*5803*40]
2014/11/22 00:53:57.725 @ 5 @ mex.MIP.utils.CATUtils @ About to start ASYNC Track to CAT of KPI Unsubscription for [msisdn=+522281344058,trackExecutionKey=20140904fG6W11409859320970MEX*5925*-1]
这是我正在使用的 zgrep 命令。
zgrep "ASYNC.*Unsubscription.*track" myfile.log.gz | sed -e '/\-/s/@.*5.*CATUtils.*trackExecutionKey=//g' | less
这是预期输出
2014/11/22 00:53:15.310 20140713U5cN61405274548493MEX*5803*40]
2014/11/22 00:53:57.725 20140904fG6W11409859320970MEX*5925*-1]
这是实际的我得到
2014/11/22 00:53:15.310 @ 5 @ mex.MIP.utils.CATUtils @ About to start ASYNC Track to CAT of KPI Unsubscription for [msisdn=+528341114903,trackExecutionKey=20140713U5cN61405274548493MEX*5803*40]
2014/11/22 00:53:57.725 20140904fG6W11409859320970MEX*5925*-1]
如您所见,第一行没有按预期替换。为什么不呢?
您告诉 sed
仅对包含 -
的行进行操作(不需要反斜杠)。
/-/ s...
参见 man sed
中的 "Addresses"。
未处理的行不包含它,所以sed不改变它。