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

Мне нужна команда (предпочтительно с использованием 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 
-4
задан 9 November 2013 в 14:05

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
0
ответ дан 9 November 2013 в 14:05

Поскольку вы специально запросили решение с использованием 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}' ...

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

0
ответ дан 9 November 2013 в 14:05

Другие вопросы по тегам:

Похожие вопросы: