Данные, с которыми я работаю, имеют следующий формат:
1880 20 David 7570 Mabel 13096
Мне нужно указать год (1880), ранг (20) и только имя (Дэвид или Мейбл). Конечным результатом является:
1880 20 David
или
1880 20 Mabel
Мне удалось раздельно выделить год, звание и имя, но у меня есть проблемы, связанные с составлением целого регулярного выражения. Я знаю основы регулярных выражений, но в настоящее время я не могу получить доступ к своим заметкам.
Я пытаюсь использовать egrep.
Я бы порекомендовал решение Python (я не знаю, что вы используете в настоящее время):
import re
re_find_data = re.compile(r'^(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+) Относительно grep
Я не уверен, что grep может использоваться в этом случае. Ему не хватает возможности печатать определенные пронумерованные группы, а это то, что вам нужно (я считаю). Мне было бы интересно узнать, есть ли у вашего профессора (или кого-либо еще) решение с чистым grep.
Это регулярное выражение должно работать, но вам нужно извлечь нужные поля из пронумерованных групп (продемонстрировано на примере Python):
(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+)
grep просто не правильный инструмент. Regex есть, но в другой реализации (привет, Python!).
)
for line in open(r'/path/to/file'):
for match in re_find_date.findall(line):
print(match)
# Do something with 'match'
# You can index the 'match' tuple like so:
print(match[2])
# Print 3rd part (name)
grep
Я не уверен, что grep может использоваться в этом случае. Ему не хватает возможности печатать определенные пронумерованные группы, а это то, что вам нужно (я считаю). Мне было бы интересно узнать, есть ли у вашего профессора (или кого-либо еще) решение с чистым grep.
Это регулярное выражение должно работать, но вам нужно извлечь нужные поля из пронумерованных групп (продемонстрировано на примере Python):
(\d+)\s+(\d+)\s+(\S+)\s+(\d+)\s+(\S+)\s+(\d+)
grep просто не правильный инструмент. Regex есть, но в другой реализации (привет, Python!).
Это было невозможно (по крайней мере из моей области видимости) только с использованием grep. Через несколько дней мой профессор сообщил мне, что он хочет, чтобы мы использовали комбинацию команд для достижения желаемого результата. Тем не менее, все ответы были действительными и работали, когда я попробовал их. Это подразумевается как прямой ответ на этот вопрос, основанный на знаниях начинающих (кто-то из моего нынешнего опыта работы с Ubuntu).