내 디렉토리에 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