私の出力は次のとおりです
/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
dos
OPの問題はスタイルラインの終わりに起因しているようです...
例:
$ 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
sed
1行使用
$ sed -n '/version/ {N; s/[\r\n]//g; p}' filename
version=2.44 date=Jul 19 2016
説明する
/version/
パターンを一致させ、中かっこブロックを実行します{ }
。N
入力ファイルから次の行を取得し、パターン空間に追加します。s/[\r\n]//g
パターン空間からすべての改行文字とキャリッジリターンを削除します。p
パターンスペースを印刷します。