10초마다 100-999 사이의 임의의 숫자를 인쇄하는 스크립트가 있는 경우 해당 정보를 .txt 파일로 어떻게 수집합니까? 가운데 숫자만 모으는 것도 가능한가요? 예: "659"에서 "5"를 수집합니다.
답변1
스크립트의 터미널 출력을 저장할 수 있습니다. 스크립트가 매번 숫자를 인쇄하는 경우 출력을 파일로 리디렉션하면 숫자가 저장됩니다.
script > file.txt
.
script >> file.txt
file.txt
그런 다음 y 중심에 대한 5개의 결과만 표시합니다.
len=$(wc -l < file.txt);
#to store the length of file
len=$((($len/2)-3));
#to get the middle of file
tail -n $len file.txt | head -n 5 ;
#show 5 lines from midlle of file
답변2
이를 위해서는 여러 단계가 있습니다. 먼저 bash 출력을 텍스트 파일에 기록해야 합니다. 당신은 그것을 사용할 수 있습니다 tee
.(맨 페이지)
스크립트를 "myscript"라고 부르겠습니다.
귀하의 의견을 다음 주소로 보내십시오.
tee /path/to/myscript.txt
그러면 bash 입력의 출력이 다음에 기록됩니다./path/to/myscript.txt
그래서 그것은 다음과 같습니다
sh /path/to/myscript.sh | tee /path/to/myscript.txt
에서 표준 텍스트 처리를 수행할 수 있습니다 /path/to/myscript.txt
.
"중앙값"을 사용하면 행 수가 짝수인지 홀수인지에 따라 달라지므로 중간이 무엇을 의미하는지 완전히 확신할 수 없습니다. 하지만 sed를 사용하여 원하는 줄을 인쇄할 수 있습니다.
sed -n 'x,yp' /path/to/myscript.txt
인쇄하려는 줄 간격의 경계는 어디 x
입니까 ?y
답변3
script | tee path/to/file.txt
script | cut -c 2
script | cut -c 2 | tee path/to/file.txt