awk多个csv文件跳过标题

时间:2017-08-17 12:38:11

标签: bash csv awk

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

这是我的代码

public interface FilePdfRepository extends JpaRepository<FilePdf, Long> {
    Page<FilePdf> getByFileNameContainingAndExtension(String fileName, String extension, Pageable pageable);
}

它提供了这样的输出

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

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

2 个答案:

答案 0 :(得分: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 :(得分:1)

使用{}更改awk -F',' -v txt="$text" 'FNR>1 { print txt" "$1 FS $0 }' 并使用显式打印

accessibilityIdentifier