Как выполнить grep для поиска букв, за которыми следует пробел и знак препинания?

Как выполнить grep для поиска букв, за которыми следует пробел и знак препинания?

У меня есть линия, которая называется

10909101 - testingName - Log8767, File787 - 8:50PM  

Теперь я просто хочу использовать grep для получения testingNameвыходных данных.

Первое число может варьироваться в зависимости от количества цифр (другая строка может иметь 12себя в качестве первого числа), поэтому я не могу использовать grep на основе чисел. Так как мне решить эту проблему?

решение1

Учитывая, что все данные будут отформатированы одинаково, grepне тот инструмент для этого. Он, конечно, пригоден для использования, но его использование — это ерунда — он не grepдля этого был разработан, и гораздо лучший инструмент — awk.

Поскольку ваш разделитель всегда будет последовательностью «пробел, тире, пробел», то -вы можете сделать это:

$ awk -F' - ' '{print $2}' <filename>

где <filename>имя файла с данными, которые вы ищете, и вы получите все строки из всего файла, обрезанные до второй записи. Если вам не нравится использовать разделитель из трех символов, вы можете сделать так:

$ awk -F- '{print $2}' | tr -d ' '

который просто берет все от первого -до второго, включая пробелы, и удаляет пробелы с помощью tr. Конечно, если в именах файлов есть пробелы, это может вызвать проблемы, и вам следует придерживаться первого примера.

решение2

Это используетдвапримеры grep, но этоявляетсячистый grep:

echo '10909101 - testingName - Log8767, File787 - 8:50PM  ' | \
grep -o '\- [[:alpha:]]* \-' | grep -o '[[:alpha:]]*'

Выход:

testingName

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