값 변경에 대한 로그 파일 구문 분석

값 변경에 대한 로그 파일 구문 분석

~에서이 답변로그 파일을 다음과 같이 줄였습니다.

Timestamp:1359021601 2013-01-17 15:00:01
size: 10G   /mnt/SolrFiles/solr/api/
Timestamp:1359025201 2013-01-17 16:00:01
size: 11G   /mnt/SolrFiles/solr/api/
...snip hundreds of lines...
Timestamp:1359021601 2013-01-24 10:00:01
size: 11G   /mnt/SolrFiles/solr/api/
Timestamp:1359025201 2013-01-24 11:00:01
size: 11G   /mnt/SolrFiles/solr/api/
Timestamp:1359028801 2013-01-24 12:00:01
size: 11G   /mnt/SolrFiles/solr/api/
Timestamp:1359032401 2013-01-24 13:00:01
size: 12G   /mnt/SolrFiles/solr/api/

패턴은 수백 줄에 걸쳐 계속됩니다. 다음과 같이 크기가 변경될 때 타임스탬프와 크기만 표시하도록 파일을 줄이고 싶습니다.

Timestamp:1359021601 2013-01-17 15:00:01
size: 10G   /mnt/SolrFiles/solr/api/
Timestamp:1359025201 2013-01-17 16:00:01
size: 11G   /mnt/SolrFiles/solr/api/
Timestamp:1359032401 2013-01-24 13:00:01
size: 12G   /mnt/SolrFiles/solr/api/

grep 및 sed와 같은 일반적인 Linux CLI 도구를 사용하여 이 작업을 수행할 수 있습니까?

답변1

일반적인 작업은 다음과 같습니다 awk.

awk '/^Timestamp/{t=$0; next}
     /^size/ && $2 != last_size {
        print t
        print
        last_size = $2
     }'

모호하고 간결하게 만들고 싶다면 다음과 같이 할 수 있습니다.

awk '!(/^T/&&t=$0)&&$2!=l&&(l=$2)&&$0=t RS$0'

관련 정보