리눅스에서 특정탐지 문자열 확인이후 아래내용 전체출력 방법..ㅜㅜ

guerrillalds의 이미지

예를 들어 아래 내용대로 입력한다면
cat /var/adm/messages |grep "^`date|cut -c5`"

당일 로그를 볼수 있었습니다. 그런데 당일말고

몇일 전부터 보고 싶어서 ^`env TZ=GMT+5 date 사용해서

이전 날짜 조회는 가능한데 그날만 검색이 됩니다.

해당 날짜부터 끝까지 전체 출력하는방법은 없을까요?

bushi의 이미지

도배 ㄴㄴ

grep 에 -A 옵션이 있기는 하지만 ... 좀 크게 보셔야 할 것 같습니다.

/var/log/messages 는 logrotate 에 의해 기간이나 크기 단위로 계속 잘릴 수 있습니다.
fedora 에선 일주일 단위로 잘라서 한달치를 압축없이 백업하도록 되어 있습니다.

[bushi@rose net]$ ls -l /var/log/messages*
-rw------- 1 root root   21528 2008-12-12 19:36 /var/log/messages
-rw------- 1 root root 1025013 2008-11-16 04:53 /var/log/messages-20081116
-rw------- 1 root root 3066576 2008-11-23 03:46 /var/log/messages-20081123
-rw------- 1 root root  225154 2008-11-30 04:33 /var/log/messages-20081130
-rw------- 1 root root   80571 2008-12-07 03:35 /var/log/messages-20081207

단순한 방식으론 저번주 토요일의 메시지를 볼 수 없습니다.
재수 없으면 백업하는 날의 메시지 일부도 잘려서 백업본으로 들어가버립니다.

OTL

guerrillalds의 이미지

죄송합니다. 글이 안올라가는줄 알고 몇 번 클릭했는데 중복이 됐네요.

sio4의 이미지

더 좋은 방법이 있을 것 같은데,
일단 sed를 활용하면 다음과 같은 방식으로 처리할 수 있겠네요.

$ sed '1,/sio4/s/\(sio4.*\)/XXX\n\1/' /etc/passwd|sed '1,/^XXX$/d'

첫 번째 sed 명령에게는 범위를 첫 번째 나타나는 패턴으로 한정하여 그 패턴을 낀 줄 앞에 다음에 사용하기 위한 패턴을 넣어주고요, 두 번째 sed는 스트림의 시작부터 앞서 삽입한 패턴까지를 구간으로 하여 지워주고 남은 내용을 화면에 뿌려주는 역할을 합니다. 이 명령을 실행하면 sio4 계정보다 늦게 만들어진 계정을 모두 볼 수 있습니다.

--
"The love you take is equal to the love you make." The End, by Beatles

--
"The love you take is equal to the love you make." The End, by Beatles