Подберите все, что не является числом, за которым следует буква - PullRequest
1 голос
/ 28 июля 2010

Извинения, если на этот вопрос ответили в другом месте - я провел поиск и не смог найти ответ.

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

Как я могу извлечь ТОЛЬКО коды occ из файла?Говоря простым языком, я хочу удалить из файла все, что не соответствует шаблону number-capital_letter.

Ответы [ 3 ]

5 голосов
/ 28 июля 2010

Вы можете сопоставить, используя /(\d+[A-Z])/

0 голосов
/ 28 июля 2010

Вот грубая попытка удалить все, кроме нужных кодов, используя sed.(Обратите внимание, что я интерпретирую «число» как строку из одной или нескольких цифр, без десятичной точки или начального знака минуса.)

sed -e 's/\([A-Z]\)[0-9]*/\1/g' -e 's/[0-9]*[^0-9A-Z]*//g' -e 's/[0-9]*$//' -e '/^$/d' < filename

Первая команда удаляет все, что после заглавной буквы не являетсячисло (и, следовательно, возможно, начало другого кода), второе удаляет любое число, за которым следует что-то кроме заглавной буквы, третье удаляет завершающие числа, а четвертое удаляет пустые строки.

Я провел несколько тестови это, кажется, работает очень хорошо.Я с радостью исправлю это, если кто-нибудь сможет найти случай, когда он потерпит неудачу.

0 голосов
/ 28 июля 2010

Написание сценария, который просматривает строку за строкой или слово за словом в зависимости от того, как коды occ появляются в файле, и проверяет совпадения, возможно, с использованием REGEX, а затем записывает их в другой файл.

Вы МОЖЕТЕ использовать одно совпадение с регулярным выражением для всего документа и перебирать результаты, но это может создавать проблемы в зависимости от размера файла.

...