我正在尝试从具有特定单词主机的文件中收集行:例如单词主机,我需要获取所有主机名称的输出。这是我的文件:
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
然后=
只打印每一行。