У Вас есть несколько проблем, в первую очередь, python 2.4, не поддерживаемый больше недавним (версии) библиотеки.
Необходимо овладеть virtualenv 1.7.2 (так как 1.8 отбросил поддержку 2,4),
Я не уверен, можно ли сделать переход от 2,4 до 3,3 без проблем, для фактического кода, с которым Вы работаете (не сторонний материал) будет нужна адаптация. Я, по крайней мере, рассмотрел бы для создания промежуточного шага из использования Python 2.7. Это совместимо с 2,4 и имеет многие из этих 3,3 функций, а также более совместимого (с 3,3) стандартная библиотека.
Пакет шесть мог бы быть полезным в дополнение к 2to3 инструмент, который идет с Python.
Я не думаю, что вы можете использовать подход Backspace - однако вы можете сделать что-то вроде
sed -e :a -e '$!N;s/\n+/ /;ta' -e 'P;D' trail.txt
, см. Известный САД Одноищеры объяснили, Часть I: Интернет-интервал, нумерация и Преобразование текста и замещение , 40. Добавьте линию на предыдущую, если она начинается с равного знака «=» (с очевидной заменой +
для =
).
FWIW, GNU awk
awk -vRS='\\n\\+?' '{ORS=RT == "\n+"? "":RT; print}' trail.txt
data net06706 net06707 net221 net222 net223
m1 net10 rwl vdda vss nch l="l1pg+0.005u" w=w1pg+0.105u
m0 vdda rwld net10 vss nch l="l1pg+0.005u" w=w1pg+0.105u
Использование Perl вместо SED:
perl -ne 'chomp; print "\n" unless s/^\+// or 1 == $.; print }{ print "\n"'
Chomp
удаляет новую строку. $.
- номер входной линии.
Пара идей, так как это будет немного сложно с SED:
perl -00 -pe 's/\n\+\s*/ /g' file
awk '
{
if (/^\+/)
sub(/^\+[[:blank:]]*/, " ", $0)
else
if (NR > 1) print ""
printf "%s", $0
}
END {print ""}
' file
GNU SED
позволяет не использовать Perl
для такой простой задачи:
sed -z 's/\n+//g' trail.txt