linux, filtre ve grep sonuçlarını biçimlendirme


0

Çıktı yapan bir betiğim var (burada 2 sonuç gösteriliyor)

Tag: tag_453672
  Path: /abc/hosts/server42/vol/tempfile.tmp
  Server host: server42
  Region: unix
  Active: NO
  View tag uuid:00fa63f2.81f211e2.9f28.00:14:4f:9a:d2:60

Tag: tag_453672
  Path: /abc/hosts/server42/vol/tempfile.tmp
  Server host: server42
  Region: unix
  Active: NO
  View tag uuid:00fa63f2.81f211e2.9f28.00:14:4f:9a:d2:60

....  

ve sonuçları filtrelemek için pipe greep kullanıyorum:

script | grep "Tag\|Active"

hangi üretmek:

Tag: tag_453672
  Active: NO
Tag: tag_453672
  Active: YES

Her filtrelenmiş sonucu, sonuçta virgülle ayrılmış gibi aynı satırda üretme imkanı var mı?

Etiket: tag_453672, Aktif: HAYIR

Tag: tag_453672, Aktif: EVET

linux  grep 

Yanıtlar:


1
script | grep "Tag\|Active" | awk 'NR%2==1{x=$0} NR%2==0{print x, $0}'

Tek bir çizgiyle karşılaştığında kaydeder, hatta eşit olduğunda yazdırır. NR koşulları yerine regex kullanarak daha az kaba yapılabilir.

Awk ile başka bir yaklaşım

script | awk '/^Tag/{x=$0} /^ *Active/{print x, $0}'

Çok teşekkürler, ilk seçenek en uygunudur. Hepinize teşekkürler, herkese puan veremem :(

2

Perl çözümü:

./script | grep 'Tag\|Active' | perl -pe '/^Tag:/ and chomp'

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.