【发布时间】:2018-01-08 17:50:47
【问题描述】:
我正在处理一个需要我编辑 csv 文件的特定列和行的项目。我已成功找到正确的行,获取行号,甚至将特定列更新为标准输出,但不在 .csv 文件中。我遇到的问题是将它们放在一起并让 sed 更新文件中的值。
这是 csv 中的值的示例:
9847,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,No,pw,Yes,SA
9848,132,3132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,No,pw,Yes,SA
9849,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9850,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9851,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9852,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9853,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9854,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9855,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
9856,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,No,pw,Yes,SA
9857,3132,132,0,168,0,410,73,4400,DC,4300,6,248,Yes,Yes,Yes,Yes,Yes,No,No,No,No,No,LSI,Service,Yes,No,Yes,pw,Yes,SA
在本例中,我想将项目编号 9856 的第 28 列修改为“是”。到目前为止,我成功的命令包括:
这个命令给了我一个正确的返回,我希望该行如何出现。
grep 9856 ./file.csv | awk -F, '$28="Yes"'
从这里我假设我需要将结果传递给 sed 命令,该命令将用更新的行替换现有行,但我所有的尝试都没有成功!
另外,如果您能详细说明您的答案,以供我学习。我还将在此项目中编辑许多其他列值。
【问题讨论】:
-
awk 'BEGIN{FS=OFS=","} $1=="9856" {$28="Yes"}1' file? -
Cyrus,这个命令会更新现有的 file.csv 吗?
-
这不会更新文件。