web-dev-qa-db-ja.com

grepを使用して文字列の一部を抽出します

ディレクトリに3つのファイルがあります

MYO144064T
MYO144064TA
MYO144064TX

数字と11番目の文字が変わる場所。私のcshスクリプトでは、おそらくgrepを使用して文字「A」と「X」を抽出したいと思います。

変数$ studyはMYO144064に等しい

私がこれまで管理してきたことは非常に面倒です

ls | grep $study | cut -c 11 | sed 's/\///'

それは私に

A
X

最小限のプロセスで、追加の空白行なしでこれを行うにはどうすればよいですか?

1
moadeep
ls | grep -oP "(?<=$study.)[A-Z]$"

$studyの内容と任意の1文字(この例ではT)が前にあり、その後に行の終わりが続く大文字を返します。

-Pオプション(Perl正規表現)は、ポジティブルックビハインド式(?<=...)を使用できるようにするために必要ですが、すべてのシステムおよびプラットフォームで使用できるとは限りません。

2
n.st
ls | grep $study | grep -o "[AX]$"

最後の文字として「A」または「X」の結果のみを返します

0
rob