2017-05-13 6 views
0

私は次の作業に苦労しています。 私は形式のファイルを持っている:私はこのフォームを希望ヘッダーを最初のフィールドとして表示する - bash

header 
abc def 
ghi jkl 
header2 
mno pqr 
stu wvx 
... 

を:

header abc def 
header ghi jkl 
header2 mno pqr 
header2 stu wvx 
... 

私は任意のプログラミング言語を使用したソリューションの茄多がなければならないけど、私は何何かを見つけることができませんでした私を助けることができた。私は、好ましくはsedまたはawkを使用して、提案を感謝します。 headerheader2などのヘッダーを使用して与えられた入力の場合

+0

header' '前にすべてのそれらの文字が何であるとしてNF==1条件を使用して行の単一のフィールドのチェックです? '>'と '\'を削除する必要がありますか?または実際に提示する – Inian

+1

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

答えて

2

Awkロジックはかなり単純なことができ、あなたが必要として、

awk '/header/{h=$0; next} {$0=(h FS $0)}1' file 

は出力を生成します。しかし、の実際のヘッダー名が異なる場合は、12という名前のパターンに従います。その後、上記の例のheaderを実際のヘッダー行に置き換えると上記のコードが機能するはずです。


コメントにオーバー123によって示唆されるように、ヘッダをチェックする別の方法は

awk 'NF==1{h=$0; next} {$0=(h FS $0)}1' file 
+1

正規表現の代わりに 'NF == 1 'をチェックすれば、どのヘッダでも動作させることができます。(すべてが1つの単語/フィールドであると仮定します) – 123

+1

申し訳ありません。私のファイルでは '>'で始まる別の文字列ですので、regexが役立ちます。最終的にコードは 'awk '/>/{h = $ 0;次の} {$ 0 =(h FS $ 0)} 1 'x6> xx2'である。ありがとう! – boczniak767

+0

@MaciejJończyk:これらのヘッダーの実際の例を教えてください。ここでは、サンプルラインの実際の例を提供する必要があります。 (または)私が提供した2番目の 'Awk'答えを試してみてください、それはあなたの場合に有効でしょう – Inian

関連する問題