string bulmak ve ikinci kontrol etmek


-2

Her dosya ile başlar ilk çizgi var a 1 bbaşlayarak hatları unknown_string ve kalan izler cunknown_string ardından

Bir a 1 bsonraki satırların herhangi birinde mevcut olan SONRASI kontrol etmek istiyorum (ilk satırdaki unknown_string ile sonraki satırdaki unknown_string'i karşılaştırın). Bir eşleşme YESvarsa - yazdırmamak için yazdırmak NO, ancak yolu ve dosya adını tutmak mı?

Girdiler

loken@lokenU:/home$ cat /home/loken/Documents/bash-test/test1.cfg
 a 1 b Test_1
c Test_1
loken@lokenU:/home$ cat /home/loken/Documents/bash-test/test2.cfg
 a 1 b Test_2
c Test_2
loken@lokenU:/home$ cat /home/loken/Documents/bash-test/test3.cfg
 a 1 b Test_3
c Test_2
c Test_4
loken@lokenU:/home$ cat /home/loken/Documents/bash-test/test4.cfg
 a 1 b Test_4
c Test_2
c Test_3

Çıktı benzer olmalıdır:

/home/loken/Documents/bash-test/test1.cfg: Yes
/home/loken/Documents/bash-test/test2.cfg: Yes
/home/loken/Documents/bash-test/test3.cfg: NO
/home/loken/Documents/bash-test/test4.cfg: NO

2
Geri bildirim: Sahip olduğunuz aşağı oylar, şu sebeplerden dolayı olabilir: (1) eskiden bir soru olarak kullanılan bir soru (bu sorun artık yok, ancak oy verenler farkında olmayabilir); (2) soru herhangi bir araştırma çabası göstermiyor. Lütfen dikkat: Süper Kullanıcı bir komut dosyası yazma hizmeti değildir. "A girişini alan ve B çıkışını veren bir şey istiyorum" gibi istekler bazı cevaplar alabilir ancak iyi sorular olarak kabul edilmezler. Bkz Sor nasıl . Gelecekteki benzer sorularınız, çözüm girişimlerinizi tanıtmalıdır. Kısmi, kusurlu veya hatta tamamen yanlış olabilirler, sadece sizin için çalışırken, sıkı oturmadığınızı bize bildirin.
Kamil Maciorowski

1
Açıklamalar için teşekkürler. Sorun için üzgünüm (diğer gönderiyi sil). Sorumu sormadan önce, sitenin arama motorunu ve Google mote'u sonra 3-4 saat aradım. Sonra burada bir profil yaptım ve sordum. Bu belki de ilk veya ikinci yazımdır kuralları gelecekte tutmaya çalışacağım. Kimsenin bana borçlu olmadığını çok iyi biliyorum ve ne istediğimi ve cevap beklediğimi sorabilirim, ancak burada yarım günlük bir meraktan sonra başım belaya girdi - ve bu toplumun yardım etmesi fikri doğru, :)
loken

Yanıtlar:


2

Kurtarmaya Perl!

perl -lne 'if ($. == 1) { ($s) = /a 1 b (.*)/; $f = 0; }
           else { -1 != index $_, $s and $f = 1; }
           if (eof) { print $ARGV, "\t", $f ? "YES" : "NO"; $. = 0}
    ' *.cfg
  • -n giriş satırını satır satır okur
  • -l baskılara yeni çizgiler ekler
  • $.giriş satır numarasını içerir. İlk satırda, dize bir yakalama grubuyla eşleştirilerek $ s içinde depolanır ve $ f ("bulundu") sıfıra (yanlış) ayarlanır.
  • Aksi halde (ilk satır değil), string bulunursa $ f true (1) değerine ayarlanır.
  • Dosyanın sonunda, satır sayısı sıfırlanır ve dosya adı sonuçla birlikte yazdırılır.

0

İle oynamak bir de bir ile döngü için :

for file in test*.cfg; do 
    awk '
        NR==1 && $1 == "a" && $2 == "1" && $3 == "b"{pattern=$4;next}
        (pattern !~ $2) {count++}
        END{print (count) ? FILENAME " NOK" : FILENAME " OK"}    
    ' "$file"
done

Çıktı :

test1.cfg OK
test2.cfg OK
test3.cfg NOK
test4.cfg NOK
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.