私はこの問題に閉じ込められています。
次の入力ファイルがあります。
16:20:03 Buy
DRIP
AMEX
500 13,51 USD
16:05:10 Sell
SQ
NYSE
100 36,32 USD
15:48:52 Sell
NXTD
Nasdaq
500 4,99 USD
15:48:52 Sell
NXTD
Nasdaq
500 4,99 USD
15:46:07 Buy
SOXL
AMEX
50 147,7209 USD
15:40:20 Buy
TEUM
AMEX
1 700 1,36 USD
15:40:19 Buy
TEUM
AMEX
300 1,36 USD
私の目標は、各4行のレコードを1行に入れることです。
16:20:03 Buy DRIP AMEX 500 13,51 USD
16:05:10 Sell SQ NYSE 100 36,32 USD
レコードごとに4つの行があることを知っています。また、各レコードがhh:mm:ss形式の時間で始まる(区切られている)こともわかっています。
RS / FS OFS / ORSを指定するさまざまなawkコマンドを試しました。次のsedのさまざまなバリエーションを試しました。
sed 'N;N;s/\n/ /'
awkは最初のレコードのみを印刷します。 sedはすべての要素を同じ行に入れることはできません
私が試したことのより具体的な例を投稿することができます。本当にシンプルに見えます。誰でも私にヒントを与えることができますか?
他の言語でより簡単な解決策を知っている場合は、自由に説明してください。
ベストアンサー1
ペーストを使う
$ paste -d' ' - - - - <file
16:20:03 Buy DRIP AMEX 500 13,51 USD
16:05:10 Sell SQ NYSE 100 36,32 USD
15:48:52 Sell NXTD Nasdaq 500 4,99 USD
15:48:52 Sell NXTD Nasdaq 500 4,99 USD
15:46:07 Buy SOXL AMEX 50 147,7209 USD
15:40:20 Buy TEUM AMEX 1 700 1,36 USD
15:40:19 Buy TEUM AMEX 300 1,36 USD
sedを使う
$ sed 'N;N;N; s/\n/ /g' file
16:20:03 Buy DRIP AMEX 500 13,51 USD
16:05:10 Sell SQ NYSE 100 36,32 USD
15:48:52 Sell NXTD Nasdaq 500 4,99 USD
15:48:52 Sell NXTD Nasdaq 500 4,99 USD
15:46:07 Buy SOXL AMEX 50 147,7209 USD
15:40:20 Buy TEUM AMEX 1 700 1,36 USD
15:40:19 Buy TEUM AMEX 300 1,36 USD
awkを使う
$ awk '{line=line " " $0} NR%4==0{print substr(line,2); line=""}' file
16:20:03 Buy DRIP AMEX 500 13,51 USD
16:05:10 Sell SQ NYSE 100 36,32 USD
15:48:52 Sell NXTD Nasdaq 500 4,99 USD
15:48:52 Sell NXTD Nasdaq 500 4,99 USD
15:46:07 Buy SOXL AMEX 50 147,7209 USD
15:40:20 Buy TEUM AMEX 1 700 1,36 USD
15:40:19 Buy TEUM AMEX 300 1,36 USD