搜索最后一个 / 并打印接下来的 2 个字符和整行

搜索最后一个 / 并打印接下来的 2 个字符和整行

我有一个文件abc.log

abc01        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fo027146
abc02        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fb027146
abc03        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fc027146

我需要在每一行中找到最后一个 /(斜杠),然后选择接下来的 2 个字符并打印整行。

我的输出应该是

abc01        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fo
abc02        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fb
abc03        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fc

答案1

grep

$ grep -o '.*/..' abc.log
abc01        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fo
abc02        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fb
abc03        /opt/app/ggs/ggs/12.1.2.1.10/dirdat/fc

这将打印直到(并包括)最后一个字符/以及接下来的两个字符的所有内容。

答案2

使用 while read 循环和 PE

while read -r line; do
  line0=${line##*/}
  printf '%s\n' "$line/${line0:0:2}"
done < abc.log

当文件大小较大时,输入速度会很慢

相关内容