bashコマンドはこれを出力します:
Runtime Name: vmhba2:C0:T3:L14
Group State: active
Runtime Name: vmhba3:C0:T0:L14
Group State: active unoptimized
Runtime Name: vmhba2:C0:T1:L14
Group State: active unoptimized
Runtime Name: vmhba3:C0:T3:L14
Group State: active
Runtime Name: vmhba2:C0:T2:L14
Group State: active
それを何かにパイプして、次のようにします:
Runtime Name: vmhba2:C0:T1:L14 Group State: active
Runtime Name: vmhba3:C0:T3:L14 Group State: active unoptimized
Runtime Name: vmhba2:C0:T2:L14 Group State: active
[...]
つまり、他のすべての改行を削除します
私は試した ... |tr "\nGroup" " "
しかし、すべての改行を削除し、他のいくつかの文字も食べてしまいました。ありがとう
現在テストできませんが、
... | paste - -
それをすべき
sed
を使用する場合、ファイル全体をメモリに読み込む必要はありません。次のように1行おきにマージできます。
sed 'N;s/\n/ /' inputfile
スペースの代わりに任意の文字を使用してください。
Awkを使用する別の方法を次に示します。
awk '{printf "%s", $0; if (getline) print " " $0; else printf "\n"}' inputfile
if/else
は、ファイルに奇数の行がある場合を処理します。これがないと、奇数の最後の行が2回印刷されます。それ以外の場合は、比較のために、次のようにすることができます。
awk '{printf "%s", $0; getline; print " " $0}'
awk
でこれを行う最も慣用的な方法は次のとおりです。
awk 'ORS=NR%2?FS:RS' file
それは出力します:
Runtime Name: vmhba2:C0:T3:L14 Group State: active
Runtime Name: vmhba3:C0:T0:L14 Group State: active unoptimized
Runtime Name: vmhba2:C0:T1:L14 Group State: active unoptimized
Runtime Name: vmhba3:C0:T3:L14 Group State: active
Runtime Name: vmhba2:C0:T2:L14 Group State: active
それを説明するには、組み込み変数をそれぞれ定義する必要があります。
RS
レコードセパレータ。デフォルトは\n
(改行)です。ORS
出力レコード区切り記号。デフォルトは\n
(改行)です。FS
フィールド区切り記号。デフォルトは(スペース)です。NR
レコード数。デフォルトのレコード区切り文字は改行なので、レコードは、デフォルトでは行です。
NR%2
はNR/2
の係数なので、0
または1
になります。 0
は偶数行、1
は奇数行です。
var=condition?condition_if_true:condition_if_false
は三項演算子です。
まとめると、ORS=NR%2?FS:RS
と言って、出力レコードセパレータを定義しています。
2k + 1
の形式、つまり偶数行の場合、出力レコードの区切り記号はFS
、つまりスペースに設定されます。2k
の形式、つまり奇数行にある場合、出力レコード区切り記号はRS
、つまり新しい行に設定されます。このようにして、奇数行はスペースで終わり、次の行と結合されます。その行の後に、新しい行が印刷されます。
詳細は Idiomatic awk をご覧ください。
これはLinuxで動作します。
... | tr "\\n" " "
これは、改行文字の空のスペースを置き換えます。 you must正常に動作するように改行文字をエスケープします。
Bashでは:
... | while read l1; do read l2; echo "$l1 $l2"; done
Perlがオプションの場合:
Perl -pe 's/\n/ / if $. % 2 == 1' file
s/\n/ /
改行をスペースに置き換えます$.
は行番号です