grep의 출력을 들여쓰기하는 방법은 무엇입니까? [복사]

grep의 출력을 들여쓰기하는 방법은 무엇입니까? [복사]

탭/공백으로 들여쓰기하려면 grep의 출력이 필요합니다.

들여쓰기되지 않은 간단한 버전은 다음과 같습니다. MyCmd | grep "id:"

나는 성공하지 않고 이것을 시도했습니다.MyCmd | grep "id:" | echo " "

답변1

awkgrep허용되는 경우 다음을 수행할 수 있습니다.

MyCmd | awk '/id:/ {print "   " $0}'

또는 grep이 필요한 경우 sed다음이 도움이 될 수 있습니다.

MyCmd | grep "id:" | sed -e 's/^/   /'

awk버전은 "id:"가 포함된 줄에서 자체 패턴 일치를 수행한 다음 해당 줄 앞의 공백을 인쇄합니다. 이 sed버전은 grep이미 수행한 것과 동일한 작업을 수행하지만 각 줄의 시작 부분을 공백으로 바꿉니다(정규식은 ^줄의 시작 부분과 일치합니다).

답변2

대신에 다음을 사용하세요 sed:

MyCmd | sed 's/^.*id:/\t&/'

id:일치하는 줄의 시작 부분에 탭 문자를 일치시키고 소개합니다.

예:

% sed 's/^foo/\t&/' <<<'foobar' 
    foobar

관련 정보