搜索并找到最后一个模式字符并打印下一个字符

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)

αғs*_*нιη 7

有了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)


jes*_*e_b 6

使用awk:

awk -F/ '{print substr($NF,1,2)}' C1.log
Run Code Online (Sandbox Code Playgroud)

这/用作字段分隔符,然后从字符 1 开始从最后一个字段打印两个字符。

  • 如果您发现答案有用,请考虑接受它(通过单击投票计数器下方当前呈灰色的复选标记),以便其他面临类似问题的人可以更轻松地找到它。 (2认同)