\(라인 커넥터)가 포함된 대용량 파일에서 전체 라인을 인쇄해 보세요.

\(라인 커넥터)가 포함된 대용량 파일에서 전체 라인을 인쇄해 보세요.

특정 단어 호스트(예: 호스트라는 단어)가 있는 파일에서 행을 수집하려고 하는데 모든 호스트 이름의 출력을 가져와야 합니다. 이것은 내 파일입니다:

host= mx,rt,fd,rt,wed,asd, \
      fm, jklf,dfd,dfd
host = jd,er,ew,yu,tg,ed,ik,cs,\
       fd, gr, jy
host = mz,fg,jh

나는 다음을 사용하고 있습니다 :

$grep -i 호스트 파일 이름 | awk '{print $2}'

첫 번째 줄에서만 작동하며 \ 이후에는 이름이 출력되지 않습니다.

따라서 출력은 다음과 같습니다.

   mx,rt,fd,rt,wed,asd, \

   jd,er,ew,yu,tg,ed,ik,cs,\

    mz,fg,jh

보시다시피 \ 다음 줄의 나머지 부분을 얻지 못합니다.

\를 제거하고 싶지 않고 유지하고 싶습니다. 이동하고 모든 이름을 연결하여 한 줄로 처리되도록 할 수 있지만 그렇게 하고 싶지 않습니다.

어떤 아이디어라도 감사하겠습니다. 쉬울 수도 있지만 tr을 사용해도 작동하게 만들 수 있습니다.

답변1

다음을 수행할 수 있습니다.

 sed '
   # delete all but lines starting with host= (allowing blanks)
   /^[[:blank:]]*host[[:blank:]]*=[[:blank:]]*/!d

   # remove that host= part
   s///
   :1
   /\\$/{
     # if the line ends in \, append the next line and loop 
     N;b1
   }'

답변2

시도 해봐awk '{gsub("host","");gsub("=","");print;}' filename

awk삭제 host한 다음 =각 줄을 인쇄하세요.

관련 정보