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

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

我有文件C1日志其中有以下内容:

/u01/app/oracle/dirdat/ab00cmf
/u01/app/oracle/dirprm/fm00lsk

我需要找到/每一行的最后一个,然后打印接下来的两个字符。

例如,我的输出应该是:

ab
fm

答案1

有了grep这个支持聚合酶链式反应

grep -oP '.*/\K.{0,2}' infile
  • \K断言用于忽略在其之前匹配的所有内容
  • .{0,2}匹配最后一个字符后的零个或最多两个字符/

对于以下输入:

/u01/app/oracle/dirprm/fm00lsk
/foo/x/ab00cmf
/foo/bar/x
/foo/somthing/

输出将是:

fm
ab
x

答案2

使用awk

awk -F/ '{print substr($NF,1,2)}' C1.log

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

答案3

使用sed贪婪匹配和反向引用:

$ sed -E 's/(^.*\/)(..)(.*$)/\2/' C1.log
ab
fm
$

相关内容