最後のパターン文字を検索して検索し、次の文字を印刷します。

最後のパターン文字を検索して検索し、次の文字を印刷します。

ファイルがあります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
$

関連情報