2016-03-28 13 views
1

awkまたはsedを使用して、すべての偶数行のテキストをすべての奇数行の末尾に追加しようとしていますが、偶数行はそのままです。奇数番号の行に偶数行を追加します。

は例えば、私が持っている:

>1 
AAAA 
>2 
BBBB 
>3 
CCCC 

と私はこのようになり、新しいファイルが必要です。

>1:AAAA 
AAAA 
>2:BBBB 
BBBB 
>3:CCCC 
CCCC 

コロンは任意ですが、私は必要なもののためにうまく動作するでしょうが。ファイルは膨大で(〜3,000,000,000行!)、高速にする必要があります。 awkやsedがうまくいくかどうか、またそれをどうやって行うかはわかりません。以下

+0

何を試しましたか? –

答えて

0
cat sample.csv                                          
>1 
AAAA 
>2 
BBBB 
>3 
CCCC 

AWKスクリプトである:実行これと表示、次の偶数行に遭遇した場合、それは奇数ラインの場合、配列に値を格納 フォーマット行を印刷

cat test.awk                                          
{ 
    if(NR %2 != 0){ 
     a[NR] = $0 
    }else{ 
     print a[NR -1] ":" $0 "\n" $0 
    } 
} 

結果:

awk -f test.awk sample.csv                                      
>1:AAAA 
AAAA 
>2:BBBB 
BBBB 
>3:CCCC 
CCCC 
1

awkレスキュー!

$ awk -v OFS=: '!(NR%2){print p OFS $0; print} {p=$0}' file 

>1:AAAA 
AAAA 
>2:BBBB 
BBBB 
>3:CCCC 
CCCC 

OFSを目的の区切り文字に設定します。

+0

かなりきちんとした、+1! – haifzhan

0

これは(GNU SED)あなたのために働くかもしれない:

偶数ラインに
sed -r 'N;s/\n(.*)/:\1&/' file 

追加奇数ラインとパターンマッチング形式に出力を使用します。

+0

よくできました。私は両方のバックリファレンスメソッドの使用が好きです、私は通常、1つのスタイルまたは別のものを分離します。 –

関連する問題