\(ラインコネクタ)を含む大容量ファイルからライン全体を印刷してみてください。

\(ラインコネクタ)を含む大容量ファイルからライン全体を印刷してみてください。

特定の単語ホスト(たとえば、ホストという単語)を含むファイルから行を収集しようとしていますが、すべてのホスト名の出力を取得する必要があります。これは私のファイルです:

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

ご覧のとおり、次の行の残りの部分を取得できません。

\を削除したくないまま維持したいです。移動してすべての名前を連結して1行で処理することができますが、そうしたくありません。

どんなアイデアにも感謝します。簡単かもしれませんが、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
   }'

おすすめ記事