以下のデータがあります。
host_name Server1.domain.com
contacts DL - Desktop
contact_groups ravi, raj, rahim
host_name Server2.domain.com
contact_groups DL-Server
host_name Server3.domain.com
host_name Server4.domain.com
contacts Services,helpdesk,manager
希望の出力は次のとおりです。
host_name Server1.domain.com, contacts ravi,raj,rahim, Contact_group DL-Desktop
host_name Server2.domain.com contact_groups DL - Server
host_name Server3.domain.com
host_name Server4.domain.com contacts services,helpdesk,manager
ベストアンサー1
awkはこれを簡単に行うことができると確信していますが、awkは私をあまり好きではないので、ここにキッチンシンクを除くすべてを使用してこれについての私の意見があります。データがfile1というファイルにあるとします。
export output=; while read line; do if [[ "$line" =~ "host_name" ]]; then export output="${output}\n"; fi; export output="${output}, $line"; done < file1 && echo -e $output | sed 's/^, \?//' | sed '/^$/d'
ファイル1の内容
host_name Server1.domain.com
contacts ravi, raj, rahim
contact_groups DL - Desktop
host_name Server2.domain.com
contact_groups DL-Server
host_name Server3.domain.com
host_name Server4.domain.com
contacts Services,helpdesk,manager
上記コマンドの出力
host_name Server1.domain.com, contacts ravi, raj, rahim, contact_groups DL - Desktop
host_name Server2.domain.com, contact_groups DL-Server
host_name Server3.domain.com
host_name Server4.domain.com, contacts Services,helpdesk,manager