명령 줄에 인쇄 된 줄 사이에 줄 바꿈을 어떻게 추가합니까?


30

메일 로그는 읽기가 매우 어렵습니다. 명령 줄에 인쇄 된 각 줄 사이에 빈 줄을 어떻게 출력 할 수 있습니까? 예를 들어, 로그를 정리하고 있다고 가정하십시오. 이렇게하면 여러 줄 바꿈이 혼란스럽지 않습니다.

답변:


52
sed G 
# option: g G    Copy/append hold space to pattern space.

G자주 사용되지는 않지만이 목적에는 적합합니다. sed 는“패턴 공간”과“홀드 공간”이라는 두 가지 버퍼 공간을 유지합니다. sed가 처리 한 라인 일반적으로 다양한 명령이 내용 ( , 등) s///에서 작동 할 때 패턴 공간을 통해 흐릅니다 p. 보류 공간은 비워지고 일부 명령에서만 사용됩니다.

G명령은 줄 바꿈 및 패턴 영역에 보류 영역의 내용을 추가합니다. 위의 sed 프로그램은 보류 공간에 아무것도 넣지 않으므로 G처리되는 모든 줄에 줄 바꿈을 효과적으로 추가합니다.


3
-e는 필요하지 않습니다. 배관 whatever | sed G은 트릭을 수행해야합니다.
frabjous

@frabjous : 그렇습니다. -e단 하나의 명령 인수 만 필요하므로 생략 할 수도 있습니다 .
Chris Johnsen

+2처럼 주실 수 있나요? 못 박아!
Christian Bongiorno

그러나, 그것은 stdout에서만 보여 지지만 그것을 저장하지는 않습니다
biolinh

8

추가 줄 바꿈을 추가하려면 awk를 사용하십시오. 또한 원하지 않는 것을 걸러 낼 수 있습니다.

awk '{print $0,"\n"}' | less

4

sed를 사용하고 전체 줄을 추가하고 줄 바꿈 문자 하나를 추가하십시오.

grep foo /var/log/maillog | sed -e "s/^.*$/&1\n/"

4
@Chris Johnsen의 'G'명령이 훨씬 간단하지만 약간 더 간단한 sed 대체는 's / $ / \ n /'입니다.
camh

3

이것이 당신이 무엇을하고 있습니까?

grep SPAM mail.log | while read -r line; do echo; echo $line; done


read -r백 슬래시 문자를 특수 문자로 취급하지 않도록하는 것이 좋습니다 .
Chris Johnsen

0

단순한 모양 이상의 것을 원한다면 텍스트 파일로 보내고 텍스트 편집기로 열어서 줄 바꿈 여부를 설정하고 쉽게 검색 할 수 있습니다 ... 원치 않는 줄을 삭제하지 않고 등을 삭제하십시오. 많은 명령을 입력해야합니다.

cat file.log > log.txtgedit log.txt또는 나노 같은 단말 편집기

편집 : 또는 cp file.log log.txt물론 더 쉽고 빠릅니다 ... KeithB 의견 덕분에


1
cat그렇지 cp않습니까?
KeithB

확실히 cp쉽고 빠르게 것 ... LOL! - 내가 다루는 다른 답변 읽고 있었다 grep그리고 awk나는 그에게 쓴 그래서를 cat하지만 난 그것을 수정하고있어, 감사 방법
로랑
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.