「完全な」データセットを持つ数行しかないセミコロンで区切られたデータファイルがあります。彼ら最後にデータセットが適用される行ブロックの位置。シェルスクリプト(または同様のコマンドラインツール)を使用して、完全に入力されたこの行のデータを上記の行に追加したいと思います。
たとえば、私のファイルに次のデータが含まれているとします。
86540701
86951202
86262402
86509002
86770802
86459902
86301002
86485102
86556002;Vivo Y11;1630000;NULL;;;
86447404
86161405
86388604
86106105
86426405;Xiaomi Redmi 8A Pro (Redmi 8A Dual);1465000;4;;;
次のように完全な行を見つけ、そのデータを上記の不完全な行に置き換えることができるようにします。
86540701;Vivo Y11;1630000;NULL;;;
86951202;Vivo Y11;1630000;NULL;;;
86262402;Vivo Y11;1630000;NULL;;;
86509002;Vivo Y11;1630000;NULL;;;
86770802;Vivo Y11;1630000;NULL;;;
86459902;Vivo Y11;1630000;NULL;;;
86301002;Vivo Y11;1630000;NULL;;;
86485102;Vivo Y11;1630000;NULL;;;
86556002;Vivo Y11;1630000;NULL;;;
86447404;Xiaomi Redmi 8A Pro (Redmi 8A Dual);1465000;4;;;
86161405;Xiaomi Redmi 8A Pro (Redmi 8A Dual);1465000;4;;;
86388604;Xiaomi Redmi 8A Pro (Redmi 8A Dual);1465000;4;;;
86106105;Xiaomi Redmi 8A Pro (Redmi 8A Dual);1465000;4;;;
86426405;Xiaomi Redmi 8A Pro (Redmi 8A Dual);1465000;4;;;
ベストアンサー1
これは私たちが使用できる仕事です。tac
ファイルを逆順に解析します。
tac file | awk -F';' 'NF > 1 {p = substr($0,index($0,FS))} {print $1 p}' | tac
そのため、行を保存せずに読み取った後に各行を印刷します。
後で使用するために、行の先頭から最後までNF > 1
部分文字列を保存するとき。FS