
我的目錄中有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