일부 터미널 출력의 타임스탬프

일부 터미널 출력의 타임스탬프

일부 터미널 명령을 출력하는 C++ 파일이 있습니다. 각 줄에 타임스탬프(ts)를 추가하는 bash 스크립트가 있는데 특정 터미널 출력에만 타임스탬프를 추가하는 것이 가능한지 궁금합니다.

예를 들어, 0-100의 숫자를 인쇄하지만 "소수를 찾았습니다!"라는 메시지가 표시되는 C++ 파일에서 "소수를 찾았습니다!"라는 줄의 타임스탬프만 필요합니다.

sed나 grep으로 가능합니까? 아니면 발생하는 패턴을 아는 경우에만 가능합니까(예: 10행마다 타임스탬프만 원하는 경우). 후자가 가능하다면 그것을 달성할 수 있는 방법이 있습니까? 감사합니다!

답변1

by가 의 명령을 ts참조한다고 가정하면 , 이는 각 줄의 시작 부분에 타임스탬프를 삽입하는 짧은 Perl 스크립트라는 점에 유의하세요.tsmoreutils

이를 쉽게 인라인화하고 행이 정규식과 일치할 때만 타임스탬프를 추가하도록 조정할 수 있습니다.

c++-program | perl -MPOSIX -pe '
  $_ = strftime("%FT%T%z ",localtime) . $_ if /prime number/i'

예를 들어.

또는 if $. % 10 == 1첫 번째 행부터 시작하여 10개 행마다 타임스탬프를 가져옵니다.

또는 조합:if /prime number/i || $. % 10 == 1

예를 들어, 여기서는 %FT%T%z모호하지 않은 표준 타임스탬프를 얻기 위해 사용되지만 2022-05-26T17:56:34+0100원하는 형식으로 조정할 수 있습니다( strftime자세한 내용은 매뉴얼 페이지를 확인하세요).

관련 정보