unix - 如何使用 awk 将两种不同类型的 csv 文件重新格式化为一种通用格式?
问题描述
我有一堆以下两种格式之一的 CSV 文件。
文件type-a.csv
:
name,age,breed,vip
jack,10,golden,no
mary,3,poodle,yes
文件type-b.csv
:
name,age,membership start,membership end,breed,vip
hazel,2,2018,2019,pit bull,yes
pot roast,4,2020,2021,lab,yes
我有两个问题。首先,我尝试使用 awk 将这些文件重新格式化为一种通用格式。像这样:
age,name,type,breed
10,jack,A,golden
3,mary,A,poodle
2,hazel,B,pit bull
4,pot roast,B,lab
这是我现在拥有的代码。我曾经find
找到所有满足命名约定的 CSV 文件。但是,我不确定如何继续awk
.
#find all csv files
for f in $(find $dir -iname 'type-*.csv' -type f)
do
awk '
BEGIN { Name=""; Type=""; Age=0; Breed=""; }
done
第二个问题是,这些文件都被命名为type-*.csv
. 例如,type-a.csv
,type-b.csv
等。我想将这些类型作为第三type
列包含到输出 CSV 文件中,但我不确定如何。
解决方案
我会做
{
echo "age,name,type,breed"
find . -name 'type-?.csv' -exec awk '
BEGIN {FS = OFS = ","}
FNR == 1 {
type = toupper(substr(FILENAME, length(FILENAME)-4, 1))
next
}
{print $2, $1, type, $(NF - 1)}
' '{}' +
} > output.csv
推荐阅读
- python - Makefile 发现错误的 python 安装(python 2 而不是 python 3)
- ckeditor - ckeditor4 源代码总是添加额外的 html 类和元素
- mysql - 执行游标 pymysql 时加载 %s 变量时出错
- javascript - 如何在 HTML DOM 中的父元素上为 2 个子元素分离 2 个事件
- linux - 在我的脚本中创建带有 echo 的文件时出错
- spring-boot - 在junit测试执行中构建时出现异常
- android - 直到手机解锁才收到广播接收者意图
- android - 如何制作一个 Android 应用程序,当他(他)在现场时,向您显示 Facebook 特定用户的现场视频广播?
- java - java中的SimpleSymbols字符串
- sql - plsql 程序永远运行