我有一个csv文件,其中每行定义给定建筑物中的房间.与房间一起,每排都有一个场地.我要提取的是所有建筑物的所有楼层.
我的文件看起来像这样......
"u_floor","u_room","name"
0,"00BDF","AIRPORT TEST "
0,0,"BRICKER HALL, JOHN W "
0,3,"BRICKER HALL, JOHN W "
0,5,"BRICKER HALL, JOHN W "
0,6,"BRICKER HALL, JOHN W "
0,7,"BRICKER HALL, JOHN W "
0,8,"BRICKER HALL, JOHN W "
0,9,"BRICKER HALL, JOHN W "
0,19,"BRICKER HALL, JOHN W "
0,20,"BRICKER HALL, JOHN W "
0,21,"BRICKER HALL, JOHN W "
0,25,"BRICKER HALL, JOHN W "
0,27,"BRICKER HALL, JOHN W "
0,29,"BRICKER HALL, JOHN W "
0,35,"BRICKER HALL, JOHN W "
0,45,"BRICKER HALL, JOHN W …Run Code Online (Sandbox Code Playgroud) 对不起,如果这太基础了.我有一个csv文件,其中列有一个标题行(v1,v2等).我知道要提取第1列和第2列,我必须这样做:awk -F "," '{print $1 "," $2}' infile.csv > outfile.csv.但是,如果我必须提取1到10,20到25和30,33列呢?作为附录,有没有办法直接提取标题名称而不是列号?
我使用awk用","解析我的数据作为分隔符,因为输入是一个csv文件.但是,数据中有","由双引号("...")转义.
例
filed1,filed2,field3,"field4,FOO,BAR",field5
Run Code Online (Sandbox Code Playgroud)
如何在双引号内忽略逗号","以便我可以使用awk正确解析输出?我知道我们可以在excel中做到这一点,但我们如何在awk中做到这一点?
我使用awk来计算csv文件中一列的总和.数据格式如下:
id, name, value
1, foo, 17
2, bar, 76
3, "I am the, question", 99
Run Code Online (Sandbox Code Playgroud)
我使用这个awk脚本来计算总和:
awk -F, '{sum+=$3} END {print sum}'
Run Code Online (Sandbox Code Playgroud)
name字段中的某些值包含逗号,这会破坏我的awk脚本.我的问题是:能解决这个问题吗?如果是的话,我该怎么做?
谢谢.
这个问题的目的是提供一个规范的答案.
给定可能由Excel或其他具有嵌入换行符的工具生成的CSV,嵌入式双引号和空字段,如:
$ cat file.csv
"rec1, fld1",,"rec1"",""fld3.1
"",
fld3.2","rec1
fld4"
"rec2, fld1.1
fld1.2","rec2 fld2.1""fld2.2""fld2.3","",rec2 fld4
Run Code Online (Sandbox Code Playgroud)
使用awk识别单独记录和字段的最有效方法是什么:
Record 1:
$1=<rec1, fld1>
$2=<>
$3=<rec1","fld3.1
",
fld3.2>
$4=<rec1
fld4>
----
Record 2:
$1=<rec2, fld1.1
fld1.2>
$2=<rec2 fld2.1"fld2.2"fld2.3>
$3=<>
$4=<rec2 fld4>
----
Run Code Online (Sandbox Code Playgroud)
所以它可以在awk脚本的其余部分内部用作那些记录和字段.
有效的CSV将符合RFC 4180或可由MS-Excel生成.
解决方案必须允许记录结束只是LF(\n),这是UNIX文件的典型情况,而不是CRLF(\r\n),正如标准所要求的那样,Excel或其他Windows工具会生成.它还可以容忍与引用字段混合的未加引号的字段.它特别不需要容忍"使用前面的反斜杠转义s(即\"代替""),因为其他一些CSV格式允许 - 如果你有,那么添加一个gsub(/\\"/,"\"\"")前端将处理它并尝试在一个脚本中自动处理两个转义机制将使脚本不必要地脆弱和复杂.
VBA不再为我裁掉它了.我有很多巨大的Excel文件,我需要进行大量的计算并将其分解为其他Excel/CSV文件.
我需要一种语言,我可以在接下来的几天内拿出来做我需要的语言,因为这是一种紧急情况.我被建议python,但我想与你确认是否有其他任何快速,轻松地处理CSV文件.
我正在创建一个bash脚本来从CSV文件生成一些输出(我有超过1000个条目,并不想手工做它...).
CSV文件的内容类似于:
Australian Capital Territory,AU-ACT,20034,AU,Australia
Piaui,BR-PI,20100,BR,Brazil
"Adygeya, Republic",RU-AD,21250,RU,Russian Federation
Run Code Online (Sandbox Code Playgroud)
我有一些代码可以使用逗号作为分隔符来分隔字段,但有些值实际上包含逗号,例如Adygeya, Republic.这些值用引号括起来表示其中的字符应该被视为字段的一部分,但我不知道如何解析它以将其考虑在内.
目前我有这个循环:
while IFS=, read province provinceCode criteriaId countryCode country
do
echo "[$province] [$provinceCode] [$criteriaId] [$countryCode] [$country]"
done < $input
Run Code Online (Sandbox Code Playgroud)
它为上面给出的样本数据生成此输出:
[Australian Capital Territory] [AU-ACT] [20034] [AU] [Australia]
[Piaui] [BR-PI] [20100] [BR] [Brazil]
["Adygeya] [ Republic"] [RU-AD] [21250] [RU,Russian Federation]
Run Code Online (Sandbox Code Playgroud)
如您所见,第三个条目的解析不正确.我希望它输出
[Adygeya Republic] [RU-AD] [21250] [RU] [Russian Federation]
Run Code Online (Sandbox Code Playgroud) 我在用
awk '{ printf "%s", $3 }'
Run Code Online (Sandbox Code Playgroud)
从空格分隔的行中提取一些字段.当我引用字段时,我得到部分结果.请问有谁提出解决方案吗?