Это должно сделать:
cat file
text
test\begin data
yes
gdgs
here we go
some\end}test
text
awk 'BEGIN {s="\\begin";e="\\end"} $0~"\\"e {split($0,a,"\\"e);print a[1]e;exit} f; $0~"\\"s {split($0,a,"\\"s);print s a[2];f=1}' file
\begin data
yes
gdgs
here we go
some\end
Часть хитрости здесь - это \
, которую нужно избежать во всех местах. Если бы это были просто нормальные символы, если бы они были проще.
Хитрость здесь в том, что я разбил строку на тэг start или stop и беру только то, что мне нужно после запуска или до остановки.
Проще читать:
awk '
BEGIN {
s="\\begin";
e="\\end"}
$0~"\\"e {
split($0,a,"\\"e);
print a[1]e;
exit}
f;
$0~"\\"s {
split($0,a,"\\"s);
print s a[2];
f=1}
' file
Если выпросто есть begin
и end
без специальных символов, вы можете сделать:
awk 'BEGIN {s="begin";e="end"} $0~e {split($0,a,e);print a[1]e;exit} f; $0~s {split($0,a,s);print s a[2];f=1}' file