使用awk删除CSV(文件)的行

ppcbkaq5  于 2022-12-15  发布在  其他
关注(0)|答案(4)|浏览(186)

海水_日期.csv:

submission ID, NAME, COUNT, Location
S34575265, Snow Goose, 12, Pt. Pinos
S34575294, Snow Goose, X, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, X, Pt. Pinos

我需要做的是通过awk删除包含与count关联的X值的每一行。
我尝试的代码:

$ awk -F ‘$3X’ Seawatch_dat.csv

它导致错误声明意外字符“”。我假设我的命令提示符不正确。我所期望的是,运行代码将删除包含X的每一行。
预期结果:
海水_日期.csv:

submission ID, NAME, COUNT, Location
S34575265, Snow Goose, 12, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
pengsaosao

pengsaosao1#

请您尝试:

awk -F, '$3 !~ /X/' Seawater_dat.csv

顺便说一句,严格意义上说,这个文件 * 不是 * csv文件,因为它在逗号后面包含不必要的空格。

6bc51xsx

6bc51xsx2#

如果你认为你的文件是CSV格式的,那么你想删除第三列中包含X的行,你可以使用GNU AWK来完成这个任务,让file.csv的内容是

submission ID, NAME, COUNT, Location
S34575265, Snow Goose, 12, Pt. Pinos
S34575294, Snow Goose, X, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, X, Pt. Pinos

那么

awk 'BEGIN{FS=","}$3!=" X"' file.csv

给出输出

submission ID, NAME, COUNT, Location
S34575265, Snow Goose, 12, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos

说明:我通知GNU AWK字段分隔符为,,然后选择第三列值($3)不等于(!=)的行字符串X

  • (在GNU Awk 5.0.1中测试)*
kmb7vmvb

kmb7vmvb3#

如果您 * 知道您的数据 * 在字段中除了字段3之外的任何地方都不包含X,并且字段总是以单个空格开始,则可以使用快速而肮脏的awk过程:

awk '!/, X, /' seawater_dat.csv
  • 产出 *
S34575265, Snow Goose, 12, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos
S34575294, Snow Goose, 1, Pt. Pinos

此过程使用单个模式(//)(默认)打印不包含(!, X,的记录(行

7tofc5zh

7tofc5zh4#

根据问题中的示例数据,您希望只保留CSV文件中包含大写 X 的行。

awk '!/X/ {print}' Seawater_dat.csv

参考此JDoodle
(Note在单击执行按钮之前,必须将文件Seawater_dat.csv的内容复制到标准输入字段。)

相关问题