gpt4 book ai didi

linux - Bash:解析 CSV 并编辑单元格值

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:55:42 25 4
gpt4 key购买 nike

我是 bash 脚本的新手我有以下 CSV

输入

ID Location Way Day DayTime NightTime StandNo
1 abc Up mon 6.00 18.00 6

预期输出

ID Location Way Day DayTime NightTime StandNo
1 ABC UP Mon 6.00 18.00 6

我需要检查 Location 和 Way 并将它们转换为 UpperCase - ABC, UP一天必须是周一 - 周一我需要为整个 CSV 执行此操作。我需要更正值并将所有字段写入 CSV 或编辑当前单元格并保存 CSV我的脚本如下

file = "Myfile.csv"
while IFS="," read line
do
output=`echo $line | cut -d "," -f2`
echo $output
for i in $output
do
if [ -z $(echo $I | sed -e "s/[a-z]//g") ]
then
echo $I | tr "[:lower:]" "[:upper:]" >> ".tempfile.CSV"
fi
done
done <$file

`1。目前这只写更正值而不是整行连同更正值。 [不确定如何遍历每行中的单元格值更正需要更正的值,然后复制整行]

任何帮助都是有用的。

最佳答案

参见 Why is using a shell loop to process text considered bad practice?

由于问题被标记为 linux,假设 GNU sed 可用。而且输入实际上是 csv,而不是空格/制表符分隔

$ cat ip.csv 
ID,Location,Way,Day,DayTime,NightTime,StandNo
1,abc,Up,mon,6.00,18.00,6
2,xyz,down,TUE,2.32,5.23,4

$ sed '2,$ {s/[^,]*/\L\u&/4; s/[^,]*/\U&/3; s/[^,]*/\U&/2}' ip.csv
ID,Location,Way,Day,DayTime,NightTime,StandNo
1,ABC,UP,Mon,6.00,18.00,6
2,XYZ,DOWN,Tue,2.32,5.23,4
  • 2,$ 处理从第二行到文件末尾的输入
  • s/[^,]*/\L\u&/4 只将第 4 个字段的首字母大写
  • s/[^,]*/\U&/3 将第 3 个字段中的所有字母大写
  • s/[^,]*/\U&/2 将第二个字段中的所有字母大写

如果字段本身可以在双引号内包含 等等,请使用 perlpython 等具有 csv 的 模块

关于linux - Bash:解析 CSV 并编辑单元格值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45003016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com