我有文件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
$