ディレクトリに3つのファイルがあります
MYO144064T
MYO144064TA
MYO144064TX
数字と11番目の文字が変わる場所。私のcshスクリプトでは、おそらくgrepを使用して文字「A」と「X」を抽出したいと思います。
変数$ studyはMYO144064に等しい
私がこれまで管理してきたことは非常に面倒です
ls | grep $study | cut -c 11 | sed 's/\///'
それは私に
A
X
最小限のプロセスで、追加の空白行なしでこれを行うにはどうすればよいですか?
ls | grep -oP "(?<=$study.)[A-Z]$"
$study
の内容と任意の1文字(この例ではT
)が前にあり、その後に行の終わりが続く大文字を返します。
-P
オプション(Perl正規表現)は、ポジティブルックビハインド式(?<=...)
を使用できるようにするために必要ですが、すべてのシステムおよびプラットフォームで使用できるとは限りません。
ls | grep $study | grep -o "[AX]$"
最後の文字として「A」または「X」の結果のみを返します