使用 grep 提取字串的一部分

使用 grep 提取字串的一部分

我的目錄中有3個文件

MYO144064T
MYO144064TA
MYO144064TX

其中數字和第 11 個字元將會變更。在我的 csh 腳本中,我想使用 grep 提取字母“A”和“X”

變數 $study 等於 MYO144064

到目前為止我所管理的非常麻煩

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

這給了我

A
X

如何以最少的流程且無需額外的空行來完成此操作?

答案1

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

$study將傳回任何大寫字母,該字母前面是加一個任意字元(在您的範例中)的內容T,後面是行尾。

需要使用該-P選項(Perl 正規表示式)才能使用正向後查找表達式(?<=...),但可能並非在每個系統和平台上都可用。

答案2

ls | grep $study | grep -o "[AX]$"

僅返回“A”或“X”的結果作為最後一個字符

答案3

一個perl辦法:

$ perl -nle 'print chop if length == 11' file
A
X

或者如果您可以使用bash

while read var
do
    [ ${#var} -eq 11 ] && echo ${var:(-1)}
done < file

相關內容