Это хороший кандидат для awk
, perl
и т. П. синтаксический анализ состояния (они будут работать как в Windows CMD.EXE
, если у вас есть perl
и / или awk/sed
в вашем PATH
, а также, конечно, в Linux и других приложениях):
awk "/^Lambda/ { in_lambda=1 ; next } in_lambda && /^ *$/ { in_lambda=0 ; printf \"\n\" ; next } in_lambda { printf \"%s \", $0 }" input_file >output_file
или
perl -ne "chomp; if (/^Lambda/) { $in_lambda = 1 } elsif ($in_lambda && /^ *$/) { $in_lambda=0 ; printf \"\n\" } elsif ($in_lambda) { printf \"%s \", $_ }" input_file >output_file
Вы можете выполнить второй проход, чтобы нормализовать пробелы (и обрезать пробелы в конце строк), если это необходимо.
awk "/^Lambda/ { in_lambda=1 ; next } in_lambda && /^ *$/ { in_lambda=0 ; printf \"\n\" ; next } in_lambda { printf \"%s \", $0 }" input_file
| sed -e "s: *: :g" -e "s: *$::" >output_file
или
perl -ne "chomp; if (/^Lambda/) { $in_lambda = 1 } elsif ($in_lambda && /^ *$/) { $in_lambda=0 ; printf \"\n\" } elsif ($in_lambda) { printf \"%s \", $_ }" input_file
| perl -ne "s/ +/ /g; s/ +$//g; print" >output_file