
プログラム出力で生成された2つの項目テーブルがあります。
Variable1 : Value1
Variable2 : Value2
Variable3 : Value3
Variable4 : Value4
Variable5 : Value5
Variable6 : Value6
Variable7 : Value7
最初と5番目のペアを抽出する必要があります。これはgrepを使って行うことです。
$ {program command} | grep -e Variable1 -e Variable5
次の出力が生成されます。
Variable1 : Value1
Variable5 : Value5
ここで問題は、2つのペアが必要であるということです。同じただし、grep -eコマンドは各-eの後にLF / CRを出力します。ファイルサイズに基づいて最終ソートするには、同じ行に4つのペアが必要です。私は同じコマンドラインでawkまたはPerlを使ってこれを行うことができると思いますが、残念ながら私はまだそれらに初めて触れます。
どんなアイデアがありますか?よろしくお願いします。
答え1
行だけをリンクするには、tr
改行削除を使用してください。
$ {program command} | grep -e Variable1 -e Variable5 | tr -d '\n'
すべてを完了awk
:
$ {program command} | awk '/Variable[15]/ { printf("%s ", $0) }'
以下と同じsed
:
$ {program command} | sed -n '/Variable[15]/H; $ { x; s/\n/ /g; p }'
答え2
grepで2行を接続する場合は、最も簡単な方法はパイプを使用することですfmt
。
$ {program command} | grep -e Variable1 -e Variable5 | fmt
行が長すぎる場合は、-w LINELENGTH
fmtオプションを使用してください。
答え3
Perlの置き換えを使用して改行文字を削除できます。
perl -ne 's/\n/ /; print if /Variable[15]/'
最後に改行文字が必要な場合は、以下を追加してください。
perl -ne 's/\n/ /; print if /Variable[15]/ }{ print "\n"'