Как проверить положение символов в столбце?

У меня столбец MBI содержит 11 символов. Из этих 11 персонажей:

  1. 2-й, 5-й, 8-й и 9-й символы всегда будут буквой.
  2. Символы 1, 4, 7, 10 и 11 всегда будут цифрами.
  3. 3-й и 6-й символы будут буквой или цифрой

Я написал код отдельно.

Шаг 1:

cut -c 3,6 ACO_SAMPLE.txt > alphanumeric

while read line
do

if echo "$line" | grep -q  '^[1-9][0-9][0-9][0-9][0-9]$'
then
   echo "$line is a valid"
else
   echo "$line is invalid"
fi

done < alphanumeric

rm -f alphanumeric

Шаг 2:

cut -c 2,5,8,9 ACO_SAMPLE.txt > alphabet

while read line
do

if echo "$line" | grep -q  '^[A-Z][A-Z][A-Z][A-Z]$'
then
   echo "$line is a letter"
else
   echo "$line is not a letter"
fi

done < alphabet

rm -f alphabet

Шаг 3:

cut -c 3,6 ACO_SAMPLE.txt > alphanumeric

while read line
do

if echo "$line" | grep -q  '^[A-Z0-9][A-Z0-9]$'
then
   echo "$line is a valid"
else
   echo "$line is invalid"
fi

done < alphanumeric

rm -f alphanumeric

Теперь мне нужно объединить все коды в один. Я не уверен как. Может ли кто-нибудь помочь мне с этим?

1 ответ

Вы можете сопоставить это с одним регулярным выражением (разбито на несколько строк для ясности). Вам может потребоваться сопоставить без учета регистра в зависимости от ваших входных данных.

^               # Start of string
[0-9]           # Number
[a-z]           # Letter
[a-z0-9]        # Letter or Number
[0-9]           # Number
[a-z]           # Letter
[a-z0-9]        # Letter or Number
[0-9]           # Number
[a-z]           # Letter
[a-z]           # Letter
[0-9]           # Number
[0-9]           # Number
$               # End of string

Или как одна строка

^[0-9][a-z][a-z0-9][0-9][a-z][a-z0-9][0-9][a-z][a-z][0-9][0-9]$
Другие вопросы по тегам