2017-08-17 27 views
0

複数のCSVファイルをawkで連結して行を変更していますが、ヘッダーを印刷したくありません。別の方法でヘッダーを処理しています。awkでヘッダーをスキップするだけですawk複数のcsvファイルをスキップする

は、ここで、それはあなたがawkはCSごとのヘッダを毎回取って見ることができます。この

Trialtime type Track time Notes Athlete 
Trialtime type Track time Notes Athlete 
20170101 07:15:00 07:15:00 Warmup ABC 85.2 Initial warmup Jon 
20170101 07:45:00 07:45:00 Sprint1 ABC 59.44 First Sprint Jon 
20170101 08:30:00 08:30:00 TRIAL ABC 57.21 Final attempt Jon 
20170101 08:00:00 08:00:00 Warmup ABC 120.51 Initial warmup Bill 
20170101 08:40:05 08:40:05 Sprint1 ABC 61.35 First Sprint Bill 
20170101 09:15:00 09:15:00 Sprint2 ABC 60.08 Second Sprint Bill 
20170101 10:30:00 10:30:00 TRIAL ABC 60.37 Final attempt Bill 
20170101 07:15:00 07:15:00 Warmup ABC 85.2 Initial warmup Jon 
20170101 07:45:00 07:45:00 Sprint1 ABC 59.44 First Sprint Jon 
20170101 08:30:00 08:30:00 TRIAL ABC 57.21 Final attempt Jon 
20170101 08:00:00 08:00:00 Warmup ABC 120.51 Initial warmup Bill 
20170101 08:40:05 08:40:05 Sprint1 ABC 61.35 First Sprint Bill 
20170101 09:15:00 09:15:00 Sprint2 ABC 60.08 Second Sprint Bill 
20170101 10:30:00 10:30:00 TRIAL ABC 60.37 Final attempt Bill 
Trialtime type Track time Notes Athlete 
201701023 07:15:00 07:15:00 Warmup ABC 85.2 Initial warmup Jon 
201701023 07:45:00 07:45:00 Sprint1 ABC 59.44 First Sprint Jon 
201701023 08:30:00 08:30:00 TRIAL ABC 57.21 Final attempt Jon 
201701023 08:00:00 08:00:00 Warmup ABC 120.51 Initial warmup Bill 
201701023 08:40:05 08:40:05 Sprint1 ABC 61.35 First Sprint Bill 
201701023 09:15:00 09:15:00 Sprint2 ABC 60.08 Second Sprint Bill 
201701023 10:30:00 10:30:00 TRIAL ABC 60.37 Final attempt Bill 
201701023 07:15:00 07:15:00 Warmup ABC 85.2 Initial warmup Jon 
201701023 07:45:00 07:45:00 Sprint1 ABC 59.44 First Sprint Jon 
201701023 08:30:00 08:30:00 TRIAL ABC 57.21 Final attempt Jon 
201701023 08:00:00 08:00:00 Warmup ABC 120.51 Initial warmup Bill 
201701023 08:40:05 08:40:05 Sprint1 ABC 61.35 First Sprint Bill 
201701023 09:15:00 09:15:00 Sprint2 ABC 60.08 Second Sprint Bill 
201701023 10:30:00 10:30:00 TRIAL ABC 60.37 Final attempt Bill 

のような出力を提供します

OutFileName="Final.csv"      # Fix the output name 
i=0          # Reset a counter 
for filename in ./*.csv; do 
if [ "$filename" != "$OutFileName" ] ;  # Avoid recursion 
then 
    if [[ $i -eq 0 ]] ; then 
     head -1 $filename > $OutFileName # Copy header if it is the first file 
    fi 
    text=$(echo $filename | cut -d '_' -f 2-) #spilliting the string to get the date 
    text=$(echo $text | cut -d '.' -f -1) 
    awk -F',' -v txt="$text" 'FNR>1||$0=txt" "$1 FS $0' OFS=',' $filename | cat >> $OutFileName # cocatinating with awk 
    i=$(($i + 1)) #increse number 
fi 
done 

私のコードですvファイルにヘッダーを無視する方法がありますか?あなたのコードで

答えて

1

、ちょうどNR!=1 &&を追加します。

OutFileName="Final.csv"      # Fix the output name 
i=0          # Reset a counter 
for filename in ./*.csv; do 
if [ "$filename" != "$OutFileName" ] ;  # Avoid recursion 
then 
    if [[ $i -eq 0 ]] ; then 
     head -1 $filename > $OutFileName # Copy header if it is the first file 
    fi 
    text=$(echo $filename | cut -d '_' -f 2-) #spilliting the string to get the date 
    text=$(echo $text | cut -d '.' -f -1) 
    awk -F',' -v txt="$text" 'FNR>1||NR!=1 && $0=txt" "$1 FS $0' OFS=',' $filename | cat >> $OutFileName # cocatinating with awk 
    i=$(($i + 1)) #increse number 
fi 
done 

これは最初の行をスキップします。

1

{}||を変更して、明示的な印刷を用い

awk -F',' -v txt="$text" 'FNR>1 { print txt" "$1 FS $0 }' 
関連する問題