Как использовать sed для печати части вывода команды

Вы не должны. Но вы всегда можете добавить пустой readme.mdили .gitignore, чтобы иметь возможность сделать это.

См. https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F.

0
24.03.2020, 00:39
3 ответа

Основываясь на ваших комментариях выше, у вас всегда будут два аргумента рядом друг с другом, и я предполагаю, что порядок будет таким, как показано, вы можете использовать следующую команду:

sed -n -e 's/.*\s\(-Xms\S*\s*-Xmx\S*\).*/\1/p' script.sh

Вот что происходит:

  • Флаг -nподавляет печать любого вывода, но pв конце выражения sed будет печатать все, что соответствует правилу.

  • В выражении используется \sдля пробельного символа и \Sдля не-пробельного символа.

  • Первая часть выражения .*\sдолжна захватывать начало строки до пробела перед шаблоном в скобках (группа захвата)

  • -Xms\S*будет соответствовать первому аргументу. Он будет начинаться с -Xms, а \S*будет соответствовать чему угодно вплоть до пробела (, например, «1000 м» или «1,5 Гб» )

  • .
  • \s*есть 0 или более пробельных символов (можно сделать это \s\s*, чтобы гарантировать разделение)

  • -Xmx\S*соответствует второму параметру, который вы хотите, снова до следующего бита пробела

  • Мы закрываем группу захвата и игнорируем остальную часть строки, заменяя ее только группой захвата.

Вероятно, есть еще дюжина способов, которыми вы могли бы сделать регулярное выражение, но это было то, что первым пришло мне в голову и сработало, когда я тестировал его.

2
28.04.2021, 23:19

Вы можете попробоватьgrep:

grep -o "\-Xms[0-9]*m \-Xmx[0-9]*m" file

Выход

-Xms1024m -Xmx1024m
0
28.04.2021, 23:19

Поскольку две строки всегда будут появляться рядом друг с другом, вы можете использовать это:

grep -o "\-Xms[0-9]*[g,m].*[0-9][g,m]" script.sh

Выход:

-Xms1024m -Xmx1024m

Это будет работать, даже если это -Xms256mили -Xmx4096mили даже если оно указано в гигабайтах, например -Xms1gили -Xmx8g. Вы можете запустить его непосредственно в файле или на выходе.

1
28.04.2021, 23:19

Теги

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