Regex, который был бы grep числа после определенной строки

В дополнение к ранее отправленным ответам я хотел бы добавить объяснение "2> &1" часть.

> /dev/null

Перенаправляет дескриптор выходного файла (дескрипторы файлов являются числом, которое процесс использует в чтение и запись в файлы, каналы и терминал) в файл/dev/null, который является "grabage, может" системы, поскольку это читает то, что записано в него и отбрасывает те данные.

2>&1

Перенаправляет stderr (вывод "файл" для ошибок) дескриптор файла, который пронумерован 2 к дескриптору файла 1, который был просто перенаправлен к/dev/null, т.е. проигнорирован.

Таким образом, обе из этих частей вместе удостоверяются, что никакой вывод не будет замечен от команды хеша.

8
24.05.2014, 15:02
7 ответов
[1178403] Попробуйте:

или:

13
27.01.2020, 20:08
[1178401] Используйте [1178820] egrep[1178821] с опцией [1178822]-o[1178823] или [1178824] grep[1178825] с опцией [1178826]-Eo[1178827], чтобы получить только совпадающий сегмент. Используйте [1178828][0-9][1178829] в качестве регекса, чтобы получить только числа:

enter image description here

4
27.01.2020, 20:08

, которые будут печатать только все числа и пробелы, возникающие после [1178830]ID: 54376[1178831] в любом вводимом файле.

Я только что немного обновил вышеизложенное, чтобы сделать это немного быстрее с помощью [1178832]*[1178833], а не с помощью [1178834]p[1178835] печатать пустые строки после удаления не{числовых,пробельных} символов.

Он адресует строки из регекса [1178836]/ID: 54376/

, [1178839] через [1178840] $ [1178841] последний и на них [1178842]s///[1178843] удаляются все или любые [1178844]*[1178845] символы [1178846]^[1178847], а не [1178848] [^ 0-] [^ 0-]. 9]*[1178849] затем [1178850]р[1178851] ринтами [1178852]/[1178853] любой [1178854]/[1178855] строкой с [1178856]. [1178857]character remaining.

  • DEMO:
  • OUTPUT:

4
27.01.2020, 20:08
[1178419] Есть [1178866] много [1178867] способов сделать это. Например:

использовать GNU [1179392]grep[1179393] с последними PCRE и совпадать с номерами после [1179394]ID:[1179395] :

grep -oP 'ID:\s*\K\d+' файла.

Используйте [1179398]awk[1179399] и просто выведите последнее поле из всех строк, которые начинаются с файла [1179400] ID:

awk '/^ID:/{печать $NF}'.

Это также напечатает поля, которые не являются числами, однако, чтобы получить только числа, и только во втором поле, используйте

awk '($1=="ID:" && $2~/^[0-9]+$/){печатайте $2}" файл.

Используйте GNU grep с расширенными регулярными выражениями и проанализируйте его дважды:

WinDirStat

grep -Eo '^ID: *[0-9]+' файл | grep -o '[0-9]*".

4
27.01.2020, 20:08
[1178558]Другая GNU команда sed,

Она печатает любое число после [1179030] ID:

0
27.01.2020, 20:08
[1179687] Используя sed:

[1180166]-n[1180167] по умолчанию "ничего не печатать", [1180168]/^ID: [0-9][0-9]*$/[1180169] - это "для строк, соответствующих этому регексу" (начинается с "ID: ", затем 1 или более цифр, затем конец строки), и [1180170]s/ID: //p[1180171] имеет форму [1180172]s/pattern/repl/flags[1180173] - [1180174]s[1180175] означает, что мы делаем замену, чтобы заменить образец [1180176]"ID: "[1180177] с текстом замены [1180178]""[1180179] (пустая строка), используя флажок [1180180]p[1180181], что означает "распечатать эту строку после выполнения замены". Вывод:

1
27.01.2020, 20:08

Используйте grep + awk:

  grep "^ID" your_file | awk {'print $2'}

Бонус: легко читать :)

0
27.01.2020, 20:08

Теги

Похожие вопросы