Как проверить положение символов в столбце?
У меня столбец MBI содержит 11 символов. Из этих 11 персонажей:
- 2-й, 5-й, 8-й и 9-й символы всегда будут буквой.
- Символы 1, 4, 7, 10 и 11 всегда будут цифрами.
- 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]$