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

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

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

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

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

2 Solutions collect form web for “Как grep для алфавитов, за которыми следует пробел и знак препинания?”

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

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

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

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

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

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

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

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

Вывод:

 testingName 
  • сравнить два файла и совпадения печати - большие файлы
  • grep -f сбой в файле, отредактированном в Windows
  • Печать строк из одного файла, если их часть отображается в другом. Оба файла имеют длину в миллионы строк
  • Как grep для нескольких шаблонов?
  • Обратное совпадение в sed, замените противоположное тому, что было найдено
  • Копирование XML-контента между двумя тегами из одного файла в другой
  • GREP для процессов по каталогам и убить его
  • Использование grep для поиска первых двух номеров IP-адресов?
  • Рекурсивно заменить строку в файлах
  • Извлечение координат совпадающего текста в PDF
  • Расширить grep, чтобы найти совпадение после первого совпадения
  • Linux и Unix - лучшая ОС в мире.