다음과 같은 항목이있는 로그 파일이 있습니다.
24/09/20 | 11:22:56am | Server1 | Backup Done
28/09/20 | 10:44:05am | Server1 | Error in Config File
10/10/20 | 04:22:10am | Server1 | Error in Config File
사이에있는 선만 추출하려면 어떻게해야합니까?
[오늘 날짜] <-> [오늘 날짜-30 일]
웹에서 검색 한 후이 명령이 작동하는 것을 찾았지만 오류가 발생합니다.
sed -n "/$(date --date='-30 day' '+%d/%m/%y')/,/$(date +'%d/%m/%y')/p"
오류
cat logs.txt | sed -n "/$(date --date='-10 day' '+%d/%m/%y')/,/$(date '+%d/%m/%y')/p"
sed: -e expression #1, char 5: unknown command: `1'
누구든지 현재 날짜로부터 30 일 된 줄만 추출하도록 도와 주시겠습니까?
GNU date
를 사용 하여 30 일 전 날짜를 가져옵니다.
그런 다음 %y%m%d
와의 알파벳 비교를 적용 하려면 형식을로 반전하십시오 awk
.
start=$(date --date='30 days ago' +'%y%m%d')
awk -v start="$start" '{split($1, a, "/")} a[3]a[2]a[1] >= start' file
참고 : 일반적으로 ISO 8601 날짜 와 같은 문자열 또는 Unix 타임 스탬프 와 같은 숫자 로 직접 정렬하거나 비교할 수있는 날짜 형식이 타임 스탬프 파일에 선호됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다