2016-09-27 6 views
0

大きなcsvファイルから関連する情報を抽出して処理しています。そのため、出力ミニCsvファイルに列名(ヘッダー)を保存します。特定のcsv列のgrepにインクルードヘッダーを追加

は、私は2つの列のCSVファイルを生成する際に正常に動作が、私は、ヘッダ情報を希望

grep "Example" $fixed_file | cut -d ',' -f 4,6 > $outputpath"Example.csv" 

も出力ファイルに含まれます。

答えて

0

Useコマンドのグループ化とミックスにhead -1を追加します。

{ head -1 "$fixed_file" && grep "Example" "$fixed_file" | cut -d ',' -f 4,6 ;} \ 
     >"$outputpath"Example.csv 
0

私の提案は、単一のawkスクリプトを使用して、複数のコマンドパイプラインを置き換えることであろう。

awk ' 
    BEGIN { 
    OFS=FS="," 
    } 

    NR==1 || /Example/ { 
    print $4,$6 
    } 
' "$fixed_file" > "$outputpath/Example.csv" 

awkのスクリプトがcondition { statement }のペアで構成されています。あなたは、ヘッダーのみを含むようにあなたのヘッダーをしたい場合は

awk ' 
    BEGIN { 
    OFS=FS="," 
    } 

    NR==1; 

    /Example/ { 
    print $4,$6 
    } 
' "$fixed_file" > "$outputpath/Example.csv" 

は、フィールド4と6は、あなたがこれを変更することができますフィールド。欠落している文は、行を印刷することを前提としています(そのため、NR==1;がヘッダーを印刷します)。

そしてもちろん、あなたがワンライナーにこれを圧縮できます。

awk -F, 'NR==1||/Example/{print $4 FS $6}' "$fixed_file" > "$outputpath/Example.csv" 
関連する問題