Sed veya awk akışına üstbilgi ve / veya altbilgi nasıl eklenir?


14

Ben sed ve awk geçmekte bir sürü çıktı var.

Çıktının START ile ön ekini nasıl ekleyebilirim ve yanıtı END ile nasıl ekleyebilirim?

Örneğin,

All this code
on all these lines
and all these

Nasıl alabilirim:

START
All this code
on all these lines
and all these
END

?

Girişim:

awk '{print "START";print;print "END"}'

ama aldım

...
START
    All this code
END
START
    on all these lines
END
START
    and all these
END

Yanıtlar:



11

Bu yapılabilir sedile

sed -e $'1i\\\nSTART' -e $'$a\\\nEND'

1iaracı I hattı 1 önce nsert; $aanlamına gelir , bir son satırında sonra ppend. $'…'Sözdizimi bash özeldir. Diğer kabuklarda, bunu aşağıdakilerle yapabilmelisiniz:

sed -e '1i \ Enter
START' -e '$ a \ Enter
END'Enter

8

Zaten sed kullanıyorsanız 1, ilk satırı ve $son satırı eşleştirmek için kullanabilirsiniz ( Scott'ın cevabına bakın ). Awk kullanıyorsanız BEGIN, ilk satırdan önce kodu çalıştırmak için bir ENDblok ve son satırdan sonra kodu çalıştırmak için bir blok kullanabilirsiniz (bkz. Michael Durrant'ın cevabı ).

Yapmanız gereken tek şey sadece kullanmak, bir başlık ve altbilgi eklemek ise echove cat.

echo START
cat
echo END

Bir ardışık düzende, birden çok komut çalıştırmak { … }için ayrıştırıcıya tek bir bileşik komutu olduklarını söylemek için kullanın.

content-generator |
{ echo START; cat; echo END; } |
postprocessor
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.