1行に複数の検索パターン+テキストジョブを印刷する

1行に複数の検索パターン+テキストジョブを印刷する

私の出力は次のとおりです

 /map1/firmware1   Targets   Properties
     version=2.44
     date=Jul 19 2016
     name=iLO 4

私が望む出力は次のとおりです。

version=2.44 date=Jul_19_2016

出力を1行に結合するためにxargs

cat test | egrep '(version=|date=)' |xargs
 date=Jul 19 2016

答え1

dosOPの問題はスタイルラインの終わりに起因しているようです...

例:

$ cat -e chk 
 /map1/firmware1   Targets   Properties^M$
     version=2.44^M$
     date=Jul 19 2016^M$
     name=iLO 4^M$

$ egrep '(version=|date=)' chk | xargs
 date=Jul 19 2016

unixスタイル付きの行末に変換した後:

$ perl -i -pe 's|\r\n|\n|' chk 

$ cat -e chk 
 /map1/firmware1   Targets   Properties$
     version=2.44$
     date=Jul 19 2016$
     name=iLO 4$

$ egrep '(version=|date=)' chk | xargs
version=2.44 date=Jul 19 2016

答え2

sed1行使用

$ sed -n '/version/ {N; s/[\r\n]//g; p}' filename
     version=2.44     date=Jul 19 2016

説明する

  • /version/パターンを一致させ、中かっこブロックを実行します{ }
  • N入力ファイルから次の行を取得し、パターン空間に追加します。
  • s/[\r\n]//gパターン空間からすべての改行文字とキャリッジリターンを削除します。
  • pパターンスペースを印刷します。

関連情報