2017-02-14 9 views
0

データヘッダー情報の後にデータエントリが含まれるファイルがあります。各ヘッダーは異なるので、次のヘッダーが出現するまで、各ヘッダーの情報をファイルの各行に追加する必要があります。例えば:私は変数にはgrepを割り当てる試みたが、私はそれがからに変更にする方法がわからないBash次のヘッダーが見つかるまで、ファイルの各行にヘッダー情報を追加します。

`"Header 1","head1_info" 
    head1_info,date1,data1 
    head1_info,date1,data2 
    "Header 2","head2_info" 
    head2_info,date3,data5 
    head2_info,date4,data6` 

"Header 1","head1_info" date1,data1 date1,data2 "Header 2","head2_info" date3,data5 data4,data6

私は、このファイルをに追加したいです次のものは、 "Header 2"に遭遇した後も、私はsedとawkを試していますが、私にもやってもらうことはできません。どんな指針も大変ありがとうございます。二重引用符を含む任意の行を仮定

+1

コード/データの前に4つの空白を付けます。 [edit-help](http://stackoverflow.com/editing-help)を見てください。 – Cyrus

答えて

0

sed -r '/^"/h;//!{G;s/(.*)\n.*"(.*)"/\2,\1/}' file 

をヘッダに遭遇した上でそれを保持空間に格納する。他のすべての行については、パターンスペースに保留スペースを追加し、バックリファレンスを使用して必要な情報を置き換えます。

0

は、ヘッダ行を示す:

awk '/"/{a=$2;gsub("\"","",a); print; next}{print a FS $0}' FS=, input 

ちょうど開始時に一致したパターンを変更し、ヘッダを決定するためのいくつかの他の方法がある場合。 (これは、変数aのヘッダ行から列2の値を記録GSUBがちょうど二重引用符を取り除きます。)。これはあなたのために働くかもしれない(GNUがSED)

関連する問題