Вы не должны. Но вы всегда можете добавить пустой readme.md
или .gitignore
, чтобы иметь возможность сделать это.
См. https://git.wiki.kernel.org/index.php/GitFaq#Can_I_add_empty_directories.3F.
Основываясь на ваших комментариях выше, у вас всегда будут два аргумента рядом друг с другом, и я предполагаю, что порядок будет таким, как показано, вы можете использовать следующую команду:
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*
соответствует второму параметру, который вы хотите, снова до следующего бита пробела
Мы закрываем группу захвата и игнорируем остальную часть строки, заменяя ее только группой захвата.
Вероятно, есть еще дюжина способов, которыми вы могли бы сделать регулярное выражение, но это было то, что первым пришло мне в голову и сработало, когда я тестировал его.
Вы можете попробоватьgrep
:
grep -o "\-Xms[0-9]*m \-Xmx[0-9]*m" file
Выход
-Xms1024m -Xmx1024m
Поскольку две строки всегда будут появляться рядом друг с другом, вы можете использовать это:
grep -o "\-Xms[0-9]*[g,m].*[0-9][g,m]" script.sh
Выход:
-Xms1024m -Xmx1024m
Это будет работать, даже если это -Xms256m
или -Xmx4096m
или даже если оно указано в гигабайтах, например -Xms1g
или -Xmx8g
. Вы можете запустить его непосредственно в файле или на выходе.