尝试从包含 \ (行连接器)的大文件中打印整行

尝试从包含 \ (行连接器)的大文件中打印整行

我正在尝试从具有特定单词主机的文件中收集行:例如单词主机,我需要获取所有主机名称的输出。这是我的文件:

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 '{打印$2}'

仅适用于第一行,在 \ 之后不输出任何名称

所以输出是;

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

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

    mz,fg,jh

正如你所看到的,我在 \ 之后没有得到该行的其余部分

我不想摆脱 \ 我想保留它,我可以移动它并连接所有名称,所以它将被视为 one_line ,但我不想这样做。

任何想法,值得赞赏,它可能很容易,但我可以让它工作,即使我使用 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然后=只打印每一行。

相关内容