Перенаправити вихід на файл із команди greping grep


9

Я запускаю це:

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

і я нічого не отримую у файлі random, він залишається нульовою довжиною після переривання команди.

Як зробити так, щоб записати вихід у файл?

Мені потрібно записати результат у файл, який повинен містити вихідні дані на зразок цього:

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

введіть тут опис зображення

Відповіді:


14

Скористайтеся --line-bufferedопцією для grep(а також позбудьтесь марного cat):

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

Таким чином вихід не буферується, а кожен рядок вводиться randomнегайно. Я також рекомендую використовувати teeу вашій трубці, щоб побачити, скільки ліній було вироблено:

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

3

Ваш файл порожній, оскільки процес переривається до того, як файл записується на диск. Саме так працює перенаправлення. В якості вирішення спробуйте:

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

Це в основному записує весь екран на файл.


Вона передбачала ще одну команду, але виконана. Дякую.
Руслан Герасимов

3

cat /dev/urandom|hexdumpабо hexdump /dev/urandomзаписує безперервно в stdout, і якщо натиснути Ctrl+ C, після цього нічого не буде виконано. Але ви можете обмежити вихід за допомогоюhead

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

це буде grepв перших 1000000 рядків виводу і записує результат у файл.


Залучив ще одну команду, але дав хороший результат. Дякую.
Руслан Герасимов

1

Вам потрібно буде записати вихід у cat /dev/urandom | hexdumpфайл, перш ніж виконувати його наступного разу. Сценарій нижче повинен виконати те, що ви намагаєтеся:

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

IFS використовується для поділу виводу на рядки тут.


(Джерело)


grep "ffff f"промахнувся
Руслан Герасимов
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.