Mos*_*ses 2 linux logs text-processing
我有C1.log文件,其中包含以下内容:
/u01/app/oracle/dirdat/ab00cmf
/u01/app/oracle/dirprm/fm00lsk
Run Code Online (Sandbox Code Playgroud)
我需要找到/每一行的最后一个,然后打印接下来的两个字符。
例如,我的输出应该是:
ab
fm
Run Code Online (Sandbox Code Playgroud)
有了grep它支持PCRE:
grep -oP '.*/\K.{0,2}' infile
Run Code Online (Sandbox Code Playgroud)
\K断言用于忽略在其自身之前匹配的所有内容.{0,2} 匹配最后一个后的零个或最多两个字符 /对于以下输入:
/u01/app/oracle/dirprm/fm00lsk
/foo/x/ab00cmf
/foo/bar/x
/foo/somthing/
Run Code Online (Sandbox Code Playgroud)
输出将是:
fm
ab
x
Run Code Online (Sandbox Code Playgroud)
使用awk:
awk -F/ '{print substr($NF,1,2)}' C1.log
Run Code Online (Sandbox Code Playgroud)
这/用作字段分隔符,然后从字符 1 开始从最后一个字段打印两个字符。