특정 단어 호스트(예: 호스트라는 단어)가 있는 파일에서 행을 수집하려고 하는데 모든 호스트 이름의 출력을 가져와야 합니다. 이것은 내 파일입니다:
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
한 다음 =
각 줄을 인쇄하세요.