使用 awk 忽略 CSV 文件字段中的逗号

2023-12-11

我试图从 CSV 文件最后一行的第二个字段中获取一个数字。到目前为止,我有这个:

awk -F"," 'END {print $2}' /file/path/fileName.csv

除非最后一行中的第一个字段中有逗号,否则这是有效的。所以对于看起来像这样的行,

"Company Name, LLC", 12345, Type1, SubType3

...在哪里"Company Name, LLC"实际上是第一个字段,awk命令将返回LLC.

如何忽略第一个字段中的逗号以便获取第二个字段中的信息?


我认为您的要求是使用的完美用例FPAT in GNU Awk,

Quoting as-is来自man page,

通常情况下,使用时FS, gawk将字段定义为出现在每个字段分隔符之间的记录部分。换句话说,FS定义字段不是什么,而不是字段是什么。然而,有时您确实想根据字段是什么来定义字段,而不是根据字段不是什么来定义字段。

最臭名昭著的此类情况是所谓的逗号分隔值 (CSV) 数据。如果逗号只是分隔数据,就不会有问题。当其中一个字段包含嵌入的逗号时就会出现问题。在这种情况下,大多数程序都会将该字段嵌入双引号中。

对于此处显示的 CSV 数据,每个字段要么是“不是逗号的任何内容”,要么是“双引号、不是双引号的任何内容以及结束双引号”。如果写为正则表达式常量(请参阅 Regexp),我们将有/([^,]+)|("[^"]+")/。将其写为字符串需要我们转义双引号,从而导致:

FPAT = "([^,]+)|(\"[^\"]+\")"

在您的输入文件上使用它,

awk 'BEGIN{FPAT = "([^,]+)|(\"[^\"]+\")"}{print $1}' file
"Company Name, LLC"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 awk 忽略 CSV 文件字段中的逗号 的相关文章

  • 使用 ProcessBuilder 运行 shell 脚本

    我正在尝试使用 Java 和 ProcessBuilder 运行脚本 当我尝试运行时 我收到以下消息 error 2 没有这样的文件或目录 我不知道我做错了什么 但这是我的代码 ps 我尝试只执行不带参数的脚本 错误是相同的 String
  • 是否有任何库可以解析Java中的“数字表达式”,例如1,2-9,33-

    我不认为这很难 只是写起来很乏味 一些小的免费 如啤酒 库 我可以在其中放入像 1 2 9 33 这样的字符串 它可以告诉我给定的数字是否与该数字匹配表达 就像大多数程序的打印范围对话框一样 仅匹配奇数或偶数 或匹配每个 2 mod 5 或
  • 在 Linux 控制台中返回一行?

    我知道我可以返回该行并用以下内容覆盖其内容 r 现在我怎样才能进入上一行来改变它呢 或者有没有办法打印到控制台窗口中的特定光标位置 我的目标是使用 PHP 创建一些自刷新的多行控制台应用程序 Use ANSI 转义码 http en wik
  • 提高mysql导入速度[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我有一个很大的数据库22GB 我曾经用过进行备份mysqldumpgzip 格式的命令 当我提取 gz 文件时 它会生成 sql文件的
  • shell解析json并循环输出组合变量

    杰斯克喜欢我之前的话题 https stackoverflow com questions 74063588 shell parsing json contains spaces in string 我知道如何解析带有空格的简单 json
  • 运行 shell 命令并将输出发送到文件?

    我需要能够通过 php 脚本修改我的 openvpn 身份验证文件 我已将我的 http 用户设置为免通 sudoer 因为这台机器仅在我的家庭网络中可用 我目前有以下命令 echo shell exec sudo echo usernam
  • 套接字发送调用被阻塞很长时间

    我每 10 秒在套接字上发送 2 个字节的应用程序数据 阻塞 但发送调用在下面的最后一个实例中被阻塞超过 40 秒 2012 06 13 12 02 46 653417 信息 发送前 2012 06 13 12 02 46 653457 信
  • php_network_getaddresses: getaddrinfo 失败: 名称或服务未知 (0) 连接失败..!

    我正在使用 php 邮件程序功能 但出现以下错误 如何修复它 2016 01 22 06 15 48 SMTP 错误 无法连接到服务器 php network getaddresses getaddrinfo失败 名称或服务未知 0 连接失
  • 如何将多个 Excel 工作表转换为 csv python

    我想转换所有的excel文档 xls 将工作表转换为 csv 如果 excel 文档只有一张工作表 那么我将进行如下转换 wb open workbook path1 sh wb sheet by name Sheet1 csv file
  • 亚马逊 Linux - 安装 openjdk-debuginfo?

    我试图使用jstack在 ec2 实例上amazon linux 所以我安装了openjdk devel包裹 sudo yum install java 1 7 0 openjdk devel x86 64 但是 jstack 引发了异常j
  • 如何回忆上一个 bash 命令的参数?

    Bash 有没有办法回忆上一个命令的参数 我通常这样做vi file c其次是gcc file c Bash 有没有办法回忆上一个命令的参数 您可以使用 or 调用上一个命令的最后一个参数 Also Alt can be used to r
  • 查找并删除超过 x 天的文件或文件夹

    我想删除超过 7 天的文件和文件夹 所以我尝试了 17 07 14 email protected cdn cgi l email protection find tmp mindepth 1 maxdepth 1 ctime 7 exec
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • 从哪里获取 iostream.h

    我正在尝试在 Linux 中做一些事情 但它抱怨找不到 iostream h 我需要安装什么才能获取此文件 这个标准头的正确名称是iostream没有扩展名 如果您的编译器仍然找不到它 请尝试以下操作 find usr include na
  • 如何从程序内部获取指向程序的特定可执行文件部分的指针? (也许是诽谤)

    我在 Linux 环境中 需要编写一个程序来检索放置在其可执行文件的某个部分中的一些数据 那么 如何从程序内部获取指向程序某个部分 通过其名称 的指针呢 我知道可以使用elf getdata 将节的索引作为参数传递给 get 和Elf Da
  • 隐式声明“gets”

    据我所知 隐式声明 通常意味着该函数必须在调用之前放置在程序的顶部 或者我需要声明原型 然而 gets应该在stdio h文件 我已包含 有没有什么办法解决这一问题 include
  • 使用 awk 如何组合两个文件中的数据并将第二个文件中的值替换到第一个文件中?

    有什么想法如何使用 awk 进行以下操作吗 两个输入文件 data txt和keys txt data txt 包含一些数据 A 1 B 2 A 3 keys txt 包含 键 值 对 本例中的 C 不是 data txt 的一部分 但 a
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • 更改 Python Cmd 模块处理自动完成的方式

    我有一个 Cmd 控制台 设置为自动完成 Magic the Gathering 收藏管理系统的卡牌名称 它使用文本参数在数据库中查询卡片 并使用结果自动完成 建议卡片 然而 这些卡片名称有多个单词 Cmd 会从last到行尾的空间 例如
  • 如何在 bash_profile 文件中添加导出语句?

    我正在尝试了解是否必须添加导出语句来在 bash profile 文件中设置变量 我该怎么做呢 例如 如果我必须添加 export AX name 那么我应该将其简单地写在文件末尾还是我还需要编写其他内容 简单写一下export AS na

随机推荐

  • cassandra c# 驱动程序中的向后分页[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我们正在尝试使用 cassandra 来存储数据库 我们无法在 c datastax 驱动程序中向后 向前分页 任何人都可以建议一种在 MVC 项目中对结果进行分页的方法吗 您可
  • jquery html在点击事件时消失

    请看下面的代码
  • Worksheet_FollowHyperlink 和 MsgBox 在 Excel 2010 中不起作用

    Cell A1 HYPERLINK Sheet2 a2 link 工作表 gt 查看代码 Private Sub Worksheet FollowHyperlink ByVal Target As Hyperlink MsgBox hell
  • Android RESTORE_TRANSACTIONS 返回 RESULT_SERVICE_UNAVAILABLE

    我有一个使用应用内购买的应用程序 我已经集成了 Dungeons 示例中除 UI 组件之外的所有代码 我已经提交了我的草稿 apk 激活了它 创建了我的应用内购买 所有这些都受到管理 并发布了它们 我能够成功购买我的应用内商品并解锁相应的内
  • http 503 错误 gwt jetty 服务器 SERVICE_UNAVAILABLE

    在 Web 浏览器中运行项目时 我从 Eclipse 集成码头服务器收到 503 错误 由于我更改了项目的 gae 应用程序 ID 因此出现此错误 java lang ClassNotFoundException com google ap
  • 单击 UIAlertview 上的按钮后,iOS 应用程序立即崩溃

    用户单击 UIAlertview 上的按钮后 我尝试使用电话应用程序拨打号码 手机应用程序确实打开了 但原始应用程序在单击 UIAlertview 上的按钮后立即崩溃 有谁知道原因吗 我确实尝试确保我发布了所有应该发布的内容 谢谢 下面是代
  • 关于@synthesize的问题

    当您从 Xcode 创建一个嵌入 CoreData 的新应用程序时 您会在委托的实现文件中得到这些行 synthesize window window synthesize managedObjectContext managedObjec
  • 微风:为什么继承自Breeze.Sharp.BaseEntity?

    我们已经开始考虑使用 BreezeSharp 因为我们有一个 WebAPI ODATA 服务 我们希望在 ASP NET 站点上重复使用该服务 不涉及 javascript 只涉及纯 C 不幸的是 我们刚刚注意到 根据文档 我们所有的模型实
  • 如何使用条件删除重复项[重复]

    这个问题在这里已经有答案了 我有以下数据框df 如何删除重复项 同时保持最小值level每对重复的item id and country id item id country id level 312330 13535670 82 3123
  • 按“运行应用程序”时出现 Gradle 错误 - Android Studio 0.4.3 [无法创建 Tooling API 的实例]

    当我按 运行应用程序 时 出现此错误 这两天一直在寻找解决办法 你能帮我吗 我安装了 Android Studio 0 4 3 当我的学校在学校计算机上更新 Java 时 此问题开始出现 org gradle tooling GradleC
  • 在此处获取 XElement 的行号

    XDocument xdoc XDocument Load file IEnumerable
  • C 中的 int foo (int argc, ...) 与 int foo() 与 int foo(void)

    所以今天我想到 诚然是第一次 int foo 事实上不同于int foo void 因为第一个允许any输入数量 第二个允许zero Does int foo 简单地忽略任何给定的输入 如果是这样 允许这种形式的功能有什么意义呢 如果没有
  • Reporting Services - 多值参数查询不返回结果

    我使用 SSRS SQL Server 2005 设置了两个报告 为了便于解释 我们称它们为MAIN REPORT and SUB REPORT MAIN REPORT运行返回一组区域的查询 每个区域有多个标记名 AREA Tagname
  • S4 方法参数的惰性求值

    我正在实现一个 S4 类 其中包含data table 并尝试实施 对象的子集 如所描述的here 这样它也可以子集化data table 例如 仅定义i子集化 library data table SuperDataTable lt se
  • Jquery.height() 使用 F5 或 CTRL+F5 返回不同的结果

    所以我试图找到图像的高度 然后添加上边距 这使我能够强加一个垂直中心 我正在运行这段代码 并在F5刷新我得到了正确的高度 但是CTRL F5 刷新它给了我一个小得多的高度 我有点认为这是一个加载 延迟的事情 但我正在使用准备好的文档 所以不
  • 是否可以从 Spotify 访问流数据?

    我正在寻求构建一个应用程序 可以从 Spotify 流式传输音乐并操纵歌曲的节奏和音高 是否可以从 Spotify iOS SDK 或任何其他资源访问原始音频缓冲区 不可以 原始音频无法通过任何 Spotify API SDK 访问 PS
  • 创建Android Activity类的对象

    我有一个扩展的类Activity我试图在普通的 java 类中创建该类的对象 但它抛出了一个异常 Can t create handler inside thread that has not called looper prepare 我
  • 尝试读取或写入受保护的内存

    我开始看到我的应用程序中的几个不同位置抛出了 AccessViolationException 它从未发生在我的开发电脑 我们的测试服务器上 它也只出现在我们 2 台生产服务器中的 1 台上 因为它似乎只发生在我们的一台生产服务器上 所以我
  • 如何检测UDP数据包是否丢失? (C#)

    我正在开发 SNTP 客户端 它通过 UDP 从 NTP 服务器获取时间戳 一切正常 我可以下载时间戳并更新 Windows 时钟 但如果 UDP 数据包丢失 我想收到一条消息 如何检测数据包何时丢失 我需要这些信息 因为如果数据丢失我想获
  • 使用 awk 忽略 CSV 文件字段中的逗号

    我试图从 CSV 文件最后一行的第二个字段中获取一个数字 到目前为止 我有这个 awk F END print 2 file path fileName csv 除非最后一行中的第一个字段中有逗号 否则这是有效的 所以对于看起来像这样的行