Komut piping grep'ten bir çıktıyı bir dosyaya yönlendirme


9

Bunu çalıştırıyorum:

cat /dev/urandom|hexdump| grep -i "ffff f" > random

ve dosyada hiçbir şey randomalmıyorum, komut kesildikten sonra sıfır uzunlukta kalır.

Bir dosyaya çıktı yazma nasıl yapılır?

Bunun gibi çıktı verileri içermesi gereken bir dosyaya bir sonuç yazmak gerekiyor:

021bc40 7724 d4f5 59ec bcbb ffff fd26 ab3c 9b7c

03a9100 b3a5 8601 fa33 ffff f23c 4326 2e7f 0c8a

0449810 e459 d5af 4e11 ffff fc55 8660 9efb 3c9b

resim açıklamasını buraya girin

Yanıtlar:


14

--line-bufferedSeçeneğini kullanın grep(ve ayrıca yararsızlardan kurtulun cat):

hexdump /dev/urandom | grep --line-buffered -i "ffff f" > random

Bu şekilde çıktı arabelleğe alınmaz, ancak her satır randomhemen girilir. Ayrıca teekaç hattın üretildiğini görmek için borunuzda kullanmanızı tavsiye ederim :

hexdump /dev/urandom | grep --line-buffered -i "ffff f" | tee random

3

Dosya diske yazılmadan önce işlem kesintiye uğradığı için dosyanız boş. Yönlendirme böyle çalışır. Çözüm olarak şunu deneyin:

script -c 'cat /dev/urandom|hexdump|grep -i "ffff f"' -f random

Bu temelde tüm ekran çıktılarını dosyaya yazacaktır.


Bir emir daha içeriyordu ama teslim edildi. Teşekkür ederim.
Ruslan Gerasimov

3

cat /dev/urandom|hexdumpveya hexdump /dev/urandomstdout'a sürekli yazar ve Ctrl+ tuşuna basarsanız Cbundan sonra hiçbir şey yürütülmez. Ancak çıktıyıhead

hexdump /dev/urandom | head -n1000000 | grep "ffff f" > random  

bu grep, çıktının ilk 1000000 satırında sonuç verir ve sonucu bir dosyaya yazar.


Bir emir daha ekledi, ama iyi bir sonuç verdi. Teşekkür ederim.
Ruslan Gerasimov

1

Bir cat /dev/urandom | hexdumpdahaki sefere yürütmeden önce bir dosyanın çıktısını yazmanız gerekir . Aşağıdaki komut dosyası, denediğiniz şeyi gerçekleştirmelidir:

cat /dev/urandom | hexdump |
  while IFS= read -r line; do
    printf '%s\n' "$line" >> random;
  done

IFS çıktıyı burada satırlara ayırmak için kullanılır.


(Kaynak)


grep "ffff f"cevapsız
Ruslan Gerasimov
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.