sed -n '/# Begin TRACE A Data/,/# Done Data $capture/{s/ MHz//;s/,/ /;s/.*=//p;}' filename
/pattern1/,/pattern2/
выбирает только строки от первого до второго паттерна, поэтому все внутри {}
выполняется только для диапазона s/ MHz//
удаляет примыкающий блок s/,/ /
заменяет запятую пробелом s/.*=//p
удаляет все до =
и печатает шаблон, поэтому будут напечатаны только строки в диапазоне с этим =
(опция -n
подавляет вывод по умолчанию)На самом деле, для вашего примера данных вы также можете сделать
sed -n 's/ MHz//;s/.*=//;s/,/ /p'
потому что только те строки, которые вам нужны, содержат запятую.
В GNU find
предполагается, что нет имен файлов, содержащих символы новой строки:
find. -maxdepth 1 -type f | zip -@ myzip
Опция -@
берет список файлов из стандартного ввода, по одному файлу в строке.
Одним из способов приблизиться к этому было бы использование zip
опции исключения:
zip /path/to/zip/file.zip /path/to/given/folder/* -x /path/to/given/folder/*/
Это говорит zip
заархивировать все в /path/to/given/folder, но также исключить все в этой папке, которая является каталогом. Здесь оболочка выполняет работу с помощью подстановочных знаков, расширяя подстановочный знак, оканчивающийся косой чертой, до списка каталогов в этой папке. Если бы у вас были точечные файлы в этом каталоге, вам пришлось бы расширять их отдельно --, а также исключать любые «точечные каталоги».