날짜 명령의 결과를 grep에 입력하여 다른 명령의 결과를 필터링하는 방법

날짜 명령의 결과를 grep에 입력하여 다른 명령의 결과를 필터링하는 방법

형식 날짜 명령(날짜 + "%m/%d")의 결과를 grep 필터로 사용하여 시스템에 경고를 표시하는 다른 명령의 결과를 필터링해야 합니다. 주어진 날짜 알람.

Alertcommand가 콘솔에 경고 판독값을 제공한다고 가정합니다. alertcommand | grep 8/10오늘의 로그를 얻을 수 있다는 것을 알고 있지만 date +"%m/%d"실행할 때마다 날짜를 지정할 필요가 없도록 입력할 수 있기를 원하지만 이를 명령에 연결하는 방법을 모르겠습니다(가급적 생성하지 않고). 고객 하드웨어에서 실행되므로 임시 파일 또는 무엇이든 가능).

내가 찾고 있어요이 질문은 다음과 유사합니다., 그러나 동일한 방식으로 작동하게 만드는 방법을 알 수 없습니다.

답변1

Bash에서는 다음과 같은 것을 사용하십시오.alertcommand | grep $(date +"%m/%d")

$()서브셸에서 명령을 실행하고 명령의 출력을 문자열로 반환합니다. 또는 명령을 백틱으로 묶어 동일한 효과를 얻을 수 있습니다.

답변2

간단히 date 명령의 출력을 다른 변수에 할당하고 이를 인수로 사용할 수 있습니다.

myDateVariable=`date +"%m/%d"`
alertcommand | grep $myDateVariable

이렇게 하면 나중에 날짜 값을 재사용하고 중간 단계를 디버깅할 수 있습니다.

답변3

FreeBSD의 쉘 csh에서는 귀하의 방법 중 하나를 사용할 수 없습니다.

1)

cat /var/log/exim/mainlog | grep $(date +%Y-%m-%d)
Illegal variable name.

2)

d=`date +%Y-%m-%d`;cat /var/log/exim/mainlog|grep $d
d=2011-11-13: Command not found.

하지만 다음과 같이 백틱 코드를 ​​직접 사용할 수 있습니다.

cat /var/log/exim/mainlog | grep `date +%Y-%m-%d`

관련 정보