명령 pipe grep에서 출력을 파일로 경로 재 지정


9

나는 이것을 실행 중이다 :

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

file random에서 아무것도 얻지 못하면 명령이 중단 된 후에 길이가 0으로 유지됩니다.

출력을 파일에 쓰는 방법?

결과를 다음과 같은 출력 데이터가 포함 된 파일에 작성해야합니다.

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

기본적으로 모든 화면 출력을 파일에 씁니다.


한 가지 명령이 더 필요했지만 전달되었습니다. 감사합니다.
Ruslan Gerasimov

3

cat /dev/urandom|hexdump또는 hexdump /dev/urandomstdout에 지속적으로 쓰며 Ctrl+ 를 누르면 C아무것도 후에 실행되지 않습니다. 그러나 당신은 출력을 제한 할 수 있습니다head

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

이것은 grep출력의 첫 1000000 줄에서 결과를 파일에 씁니다.


명령을 하나 더 포함했지만 좋은 결과를 얻었습니다. 감사합니다.
Ruslan Gerasimov

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"놓친
Ruslan Gerasimov 8
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.