【问题标题】:awk multiple csv file skip headersawk 多个 csv 文件跳过标题
【发布时间】:2017-08-17 12:38:11
【问题描述】:

我正在使用 awk 连接多个 csv 文件并修改行 但我不想打印标题我正在用另一种方法处理标题我只想让 awk 跳过标题

这是我的代码

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

它会给出这样的输出

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

你可以看到 awk 每次都为每个 csv 文件获取标题有没有办法忽略标题?

【问题讨论】:

    标签: bash csv awk


    【解决方案1】:

    || 更改为{} 并使用显式打印

    awk -F',' -v txt="$text" 'FNR>1 { print txt" "$1 FS $0 }'
    

    【讨论】:

      【解决方案2】:

      在您的代码中,只需添加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
      

      这将跳过第一行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-24
        • 2015-03-07
        • 1970-01-01
        相关资源
        最近更新 更多