我有一个文件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
当文件大小较大时,输入速度会很慢