Найти записи, содержащие строку, начинающуюся и заканчивающуюся определенными символами.

Найти записи, содержащие строку, начинающуюся и заканчивающуюся определенными символами.

Мне нужна команда (предпочтительно с использованием awk), которая выводит уникальный номер списка и имена всех студентов, чьи имена начинаются Aи заканчиваются на , kиз следующего списка:

001 Abhishek Physics 90
002 Rohan Maths 100
003 simashree Chemistry 89
002 Rohan Language 80
005 Vamsi Computers 99
001 Abhishek Maths 95
006 Surjya Computers 93 

решение1

Поскольку вы запросили конкретно решение с использованием awk, то, предположив, что номер рулона и имя являются первым и вторым полями, вы могли бы использовать

awk '$2 ~ /^A[[:alpha:]]*k$/ {print $1,$2}' yourfile

Если вам нужны уникальные записи, самый простой способ — передать результаты через sort -uкоманду

awk '$2 ~ /^[[:alpha:]]*k$/ {print $1,$2}' yourfile | sort -u


Возможно, правильнее будет использоватьякоря словвместоякоря линии^, $ в регулярном выражении, т.е.

awk '$2 ~ /\<[[:alpha:]]*k\>/ {print $1,$2}' ...

В данном контексте оба варианта, по-видимому, работают (возможно, потому, что поле уже разделено пробелами).

решение2

Предполагая, что у вас есть эти записи в файле с именем data_file.txt, вы можете использовать:

grep "A[a-z]*k" data_file.txt

Если вы хотите удалить первый столбец чисел, то используйте:

grep "A[a-z]*k" test | cut -d" " -f 2-

Если вы хотите удалить последний столбец чисел, то используйте:

grep "A[a-z]*k" test | cut -d" " -f -3

Связанный контент