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