2016-08-17 13 views
0

ヘッダー内の部分パターン一致に基づいて.csvファイル列を削除するawkまたはlinuxコマンドを知っている人はいませんか?私は多くの例を試しましたが、何もしなかったか、すべての列を削除しました。部分ヘッダーパターンに基づいて.csv列を削除する

Example: I want the columns removed that have the header name "(RAW)" within it. 

G_TP01_OPER_ID,G_TP01_OPER_ID(RAW),G_TP02_PROC_NO,G_TP02_PROC_NO(RAW) 
4008636142,4008636142,4008636142,4008636142,4008636142 

Desired output: 

G_TP01_OPER_ID,G_TP02_PROC_NO 
4008636142,4008636142 

ありがとうございます!

+0

あなたは4つのヘッダと5つのデータ列を持っている – hek2mgl

+0

hek2mglはい、私は非常に大きなファイルのちょうどスニペットを投稿することを意図し、誤ってヘッダーとデータ列が正しく一致しませんでした。下の私のコメントでは、部分パターン一致で削除する必要があるヘッダー全体に「(RAW)」パターン(約200程度)があるフィールドが多数あります。 –

+0

ok、got it ...... – hek2mgl

答えて

0
awk -F, '{print $1,$3}' OFS="," file 

G_TP01_OPER_ID,G_TP02_PROC_NO 
4008636142,4008636142 
+0

私はお詫び申し上げますが、これは1列目と3列目のみを削除しているようです。これを投稿すると急いでいましたが、 "RAW" "ヘッダーには、非常に長いヘッダー行全体に約70程度です。それを説明していない私のせいです。 –

+0

これは私が前のコメントで意味したことです: "私はお詫び申し上げます、これはカラム1と3を保持するだけです。私はこれを投稿すると急いでいましたが、 "ヘッダーでは、非常に長いヘッダー行全体で約200程度です。私はそれを説明していないため、部分的なパターン(" RAW ")に基づいて列を削除する必要があります。 (私の別のファイルのために)部分的なパターンに基づいて多くの列を保持するための反対のコマンドがありました。 –

+0

こんにちはClaes:あなたの答えは、いくつかの文脈では良いでしょう。質問者の問題を解決する方法/方法の説明を含めると、質問者自身や、同様の問題に対する解決策を探している他の読者にとっても理解しやすくなります。 –

0

ここでシェルバージョンは、標準入力を介して供給されるように、です:

read 
fields=-f 
sep= 
i=0 
IFS=, 
for field in $REPLY 
do # collect fields without "(RAW)" 
    ((i=i+1)) 
    if [[ $field != *"(RAW)"* ]] 
    then # output header name, append field number to $fields 
      echo -n "$sep$field" 
      fields+="$sep$i" sep="," 
    fi 
done 
echo 
cut -d"," "$fields" 
+0

Armali、ここで私の議論(入力ファイル)をこのスクリプトに置きますか? –

+0

@Adrian Chavez:_によって標準入力から供給される_は、 'script Armali

+0

さて、これを試してみましょう。ありがとうございました! –

関連する問題