ファイルがあります。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文字までの/
すべての内容が印刷されます。
答え2
while読み取りループとPEの使用
while read -r line; do
line0=${line##*/}
printf '%s\n' "$line/${line0:0:2}"
done < abc.log
ファイルサイズが大きいと入力が遅くなることがあります。