나는 프로그램을 100번 반복하는 bash 스크립트를 작성했습니다. 각 반복의 출력에는 14개의 행이 있지만 나머지 분석에는 행 14(마지막 행이라고도 함)만 필요합니다.
비슷한 질문에 대한 답변을 읽었지만 모두 출력에 이름이 지정된 줄이 있다고 가정합니다. 반면 출력의 10번째 줄은 다음과 같습니다.
1 0 0.005 63.01
grep
붙일 이름이 없습니다 .
나는 10행을 취하고 bash 스크립트에서 수행된 각 반복에 대해 total_output.txt
다음과 같이 다른 파일()의 맨 아래에 출력을 추가하고 싶습니다.
left right p-value ratio
1 0 0.005 63.01
1 0 0.02 67.23
그리고 각 반복마다 계속됩니다. 바람직하게는 이는 동일한 bash 스크립트 내에 있으며 각 반복에 대한 프로그램 출력을 저장할 필요가 없습니다.
저는 Linux와 bash 스크립팅을 처음 접했기 때문에 이 질문이 어리석게 보인다면 사과드립니다. 비슷한 질문에 대한 답변을 내 문제에 적용하는 방법을 정말 이해할 수 없습니다.
답변1
다음을 사용하면 tail
마지막 줄만 얻을 수 있습니다 .total_output.txt
your_program | tail -n 1 >> total_output.txt
명령은 세 부분으로 구성됩니다.
your_program
프로그램을 실행하고 반복 내용을 출력합니다.| tail -n 1
이 출력의 마지막 줄만 가져옵니다(접두사로 파이프가 붙음).>> total_output.txt
지정된 파일에 마지막 줄을 추가합니다(추가 출력 리디렉터가 앞에 붙음)
답변2
편집 내용에 따라 항상 다음을 원합니다.마지막(원래 표시된 것처럼) 특정 줄 번호가 아닌 출력 줄입니다.
고정 길이 출력의 경우 원래 답변이 무효화되지는 않지만 awk
행 수가 가변적이고 마지막 행만 선택하려는 경우에도 다음을 사용할 수 있습니다.
your_program | awk 'END{print}' >> total_output.txt
이는 파일 끝(또는 입력 끝)에서 "현재" 줄이 여전히 읽혀진 마지막 줄이라는 사실을 활용합니다.
원래 답변
grep
awk
대신 이 목적으로 사용할 수 있습니다 .
your_program | awk 'NR==14' >> total_output.txt
그러면 의 출력이 your_program
으로 만 파이프되어 awk
14행만 인쇄됩니다. 출력은 원하는 파일로 리디렉션됩니다(추가 모드에서).
출력이 14라인을 초과하고 효율성을 위해 트리밍하려면 다음과 같이 수정하십시오.
your_program | awk 'NR==14{print;exit}' >> total_output.txt
이 줄에 도달하자마자 프로세스가 종료됩니다 awk
.
노트(당신이 출력을 썼기 때문에"10줄 정도") 출력에 실제로더 적은좋습니다. 파일에 아무것도 추가되지 않습니다!