ファイルがありますC1ログその中には以下が含まれます。
/u01/app/oracle/dirdat/ab00cmf
/u01/app/oracle/dirprm/fm00lsk
各行の最後の部分を見つけて、次の/
2文字を印刷する必要があります。
たとえば、私の出力は次のようになります。
ab
fm
答え1
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
答え2
使用awk
:
awk -F/ '{print substr($NF,1,2)}' C1.log
これは/
フィールド区切り文字として使用され、最後のフィールドの文字1から始まる2つの文字を印刷します。
答え3
sed
グリディマッチングと逆参照を使用してください:
$ sed -E 's/(^.*\/)(..)(.*$)/\2/' C1.log
ab
fm
$