dan*_*res 3 awk rename csv files
我需要计算 CSV 文件中的列数。如果小于 11,重命名附加.bad后缀的文件。我试过这个,但它缺少我需要的东西:
head -1 myfile.csv | sed 's/[^,]//g' | wc -c
Run Code Online (Sandbox Code Playgroud)
我需要对目录中的所有文件执行此操作。
for file in *.csv; do
cols=$( awk -F, 'NR == 1 {print NF; exit}' "$file" )
if [[ "$cols" -lt 11 ]]; then
mv -v "$file" "$file.bad"
fi
done
Run Code Online (Sandbox Code Playgroud)
或者,使用没有 awk 的 bash
for file in *.csv; do
IFS=, read -ra fields <"$file"
if [[ "${#fields[@]}" -lt 11 ]]; then
mv -v "$file" "$file.bad"
fi
done
Run Code Online (Sandbox Code Playgroud)