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

grep 2018-01 mca159.182.txt 

Хотя вышеприведенное работает, оно не извлекает эти записи в файл, даже если я добавлю -o и имя файла, который я хочу, чтобы он создавал и помещал записи. Он по-прежнему просто отображает все результаты, которые имеют 2018 в терминале, где у меня нет выбора, кроме как скопировать и вставить. Так что этот совет тоже был бы полезен для того, чтобы я поместил результаты в новый текстовый файл. Вот как выглядит формат файла, с которым я имею дело:

phone       dob     size
9546022996  8/7/17  199000
9123842128  8/7/17  199000

Скажем, я хотел извлечь все 10-значные телефонные номера, или, на самом деле, мне нужна вся запись, то есть три столбца будут экспортированы в новый файл или как минимум на экран для всех номеров, которые начинаются с 954, 213, 909. Так что, если сработает, то он найдет первую запись выше в качестве совпадения.

1 ответ1

0

Здесь есть два вопроса:

1) Как отправить вывод из grep в файл, а не на экран терминала?

Опция -o для grep просто показывает соответствующую часть любой строки. Вы, возможно, думаете, что-то вроде этого вопроса?

grep 2018-01 mca159.182.txt > newfile.txt

Отправит любые совпадающие строки в newfile.txt.

2) Как использовать grep для сопоставления первых трех символов в файле, для нескольких возможных совпадений?

grep -E "^954|^213|^909" mca159.182.txt > newfile.txt

Мы должны указать расширенные регулярные выражения с -E (или использовать команду egrep), чтобы иметь возможность использовать | символ (называемый оператором чередования в руководстве grep). Символ «^» является якорем и означает просто совпадение с положением трех символов в начале строки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .