私は次のファイルを持っていますC1.log:
/u01/app/Oracle/dirdat/ab00cmf
/u01/app/Oracle/dirprm/fm00lsk
すべての行の最後の/
を見つけて、次の2文字を印刷する必要があります。
たとえば、私の出力は次のようになります。
ab
fm
[〜#〜] pcre [〜#〜] をサポートするgrep
を使用:
grep -oP '.*/\K.{0,2}' infile
\K
アサーションは、それ自体の前に一致したすべてのものを無視するために使用されます.{0,2}
は、最後の/
の後のゼロまたは最大2文字に一致します以下の入力の場合:
/u01/app/Oracle/dirprm/fm00lsk
/foo/x/ab00cmf
/foo/bar/x
/foo/somthing/
出力は次のようになります。
fm
ab
x
awk
の使用:
awk -F/ '{print substr($NF,1,2)}' C1.log
これは/
をフィールド区切り文字として使用し、最後のフィールドから文字1から始まる2文字を出力します。
sed
貪欲なマッチングと後方参照の使用:
$ sed -E 's/(^.*\/)(..)(.*$)/\2/' C1.log
ab
fm
$