使用 gawk 解析 CSV 文件

2024-07-03

如何使用 gawk 解析 CSV 文件?简单设定FS=","还不够,因为内部带有逗号的引用字段将被视为多个字段。

使用示例FS=","这不起作用:

文件内容:

one,two,"three, four",five
"six, seven",eight,"nine"

呆呆的脚本:

BEGIN { FS="," }
{
  for (i=1; i<=NF; i++) printf "field #%d: %s\n", i, $(i)
  printf "---------------------------\n"
}

不良输出:

field #1: one
field #2: two
field #3: "three
field #4:  four"
field #5: five
---------------------------
field #1: "six
field #2:  seven"
field #3: eight
field #4: "nine"
---------------------------

期望的输出:

field #1: one
field #2: two
field #3: "three, four"
field #4: five
---------------------------
field #1: "six, seven"
field #2: eight
field #3: "nine"
---------------------------

gawk 第 4 版手册 http://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html说要使用FPAT = "([^,]*)|(\"[^\"]+\")"

When FPAT被定义,它禁用FS并按内容而不是按分隔符指定字段。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 gawk 解析 CSV 文件 的相关文章

  • printf '%s\n' "${array[@]}" 每个数组元素打印一行是否正常?

    在我的 bash 脚本中 我包含了程序所需的一系列其他文件 然后我在帮助说明中打印这些内容 当我使用 printf 进行输出时 我得到了意想不到的结果 我读到 形式 array 通常是首选的扩展默认形式 所以我从它开始 我的数组声明 scr
  • 复制所有子目录中具有特定扩展名的所有文件

    在unix下 我想将所有子目录中具有特定扩展名的所有文件 所有excel文件 复制到另一个目录 我有以下命令 cp parents find name xls target directory 该命令的问题是 它也会复制目录结构 而我只想要
  • sed/awk 或其他:一行将数字增加 1 并保持空格字符

    EDIT 我事先不知道我的数字将在哪一 列 并且我想要一句俏皮话 显然 sed 不做算术 所以也许有一个基于 awk 的单行解决方案 我有一个字符串 注意间距 eh oh 37 我希望它变成 eh oh 36 所以我想保持间距 Using
  • 从脚本中获取最后执行的命令

    我试图从脚本中获取最后执行的命令行命令 以供以后参考 例子 echo Hello World gt Hello World my script sh gt echo Hello World 脚本的内容是 usr bin ksh fc nl
  • 如何让 bash 函数在出现任何错误时返回 1

    我有一个假的 bash 函数 如下所示 has error true echo Ok false echo Shouldn t be here 当我运行此函数并检查错误状态时我希望发生什么 gt has error echo Ok 1 但实
  • pandas read_csv() 方法支持 zip 存档读取,但 to_csv() 方法不支持 zip 存档保存

    Pandas 0 18 支持 read csv zip 文件作为参数 并将压缩的 csv 表正确读取到数据框中 但是当我尝试使用 to csv 方法将数据帧保存为压缩 csv 时 我收到错误 根据官方文档 to csv 方法不支持zip格式
  • 手动将行添加到 StreamingHttpResponse (Django)

    我正在使用 Django 的 StreamingHttpResponse 动态传输大型 CSV 文件 根据the docs https docs djangoproject com en 1 11 ref request response
  • 如何获取给定 IP 地址的以太网端口?

    我正在尝试编写一个 bash 脚本来获取我知道其 IP 地址的接口的以太网端口 我需要从 ifconfig 获取这个 但似乎无法弄清楚如何去做 有任何想法吗 Thanks 将 127 0 0 1 替换为您要获取其接口信息的 IP 地址 if
  • Bash:如何打印并运行其中包含管道运算符 | 的 cmd 数组

    这是我的问题的后续 当命令的参数带有空格或要扩展的内容时 如何编写 bash 函数来打印和运行命令 https stackoverflow com q 71117953 4561887 假设我有这个函数来打印并运行存储在数组中的命令 Pri
  • 以与 Bash 相同的方式转义文件名

    当我使用 tab 键时bash 当您开始输入文件名并希望其完成时 bash正确转义文件名 如果我完全使用 转义 文件名 它就可以工作 例如 An Beat Mentally Insine Original Mix mp3 gt 之后bash
  • Bash - 使用通配符重定向

    我正在测试使用通配符进行重定向 就像是 TEST lt INPUT gt OUTPUT 有人有什么建议吗 谢谢 假设您有以下 5 个文件 TEST1 TEST1 INPUT1 INPUT2 and OUTPUT 命令行 TEST lt IN
  • 取消设置脚本中定义的全局变量是一种好的做法吗?

    在编写 sh 脚本时 在脚本末尾取消设置所有先前定义的全局变量是否被认为是好的做法 例如 如果我执行我的脚本myscript使用 来源 内置 像这样 myscript 执行脚本后 shell 会被脚本中定义的变量污染 这看起来真的很糟糕 特
  • WordPress 网站前端的 CSV 上传(PHP/SQL)

    我在某些领域取得了很大进展 但在其他领域却遇到了困难 目标是 客户正在使用现有的 WordPress 网站 他们希望管理员用户访问带有上传选项的前端页面之一 他们可以在其中上传 CSV 每天几次 然后 在访问门户中的其他页面时 将显示表格中
  • git with --git-dir= 导致“不是 git 存储库”

    我的一个 iOS 应用程序中有一个脚本 它应该获取 git 修订哈希并将其放入版本号中 在此脚本中 我运行 git git dir PROJECT DIR show s pretty format h 但是 我收到消息说该目录不是 git
  • 使用Prometheus读取csv文件

    我有 csv 格式的数据 我想将该数据添加到 prometheus 中 请帮助我 是否存在任何出口商或 API 等 您需要一个导出器 通过 HTTP 以 Prometheus 格式公开 CSV 文件中的数据 以便 Prometheus 可以
  • 使用 gawk 解析 CSV 文件

    如何使用 gawk 解析 CSV 文件 简单设定FS 还不够 因为内部带有逗号的引用字段将被视为多个字段 使用示例FS 这不起作用 文件内容 one two three four five six seven eight nine 呆呆的脚
  • SQL Loader 脚本帮助添加 SYSDATE、USER

    我正在尝试从文件加载数据 并且想将 CREATED DATE 和 UPDATED DATE 设置为 SYSDATE 将 CREATE BY 和 UPDATED BY 设置为 USER 这是我正在使用的表 CREATE TABLE CATAL
  • 在 Bash 中使用大小写表示数字范围

    我正在尝试使用以下方法进行操作case在 Bash 中 在 Linux 中 如果X在460到660之间 则输出X信息 如果 X 介于 661 和 800 之间 请执行其他操作 Etc 现在这就是我所拥有的 case MovieRes in
  • 在 Python 中运行 Bash 命令

    在我的本地计算机上 我运行一个包含此行的 python 脚本 bashCommand cwm rdf test rdf ntriples gt test nt os system bashCommand 这很好用 然后我在服务器上运行相同的
  • awk 变量赋值语句需要解释

    好吧 言归正传 这是代码 我对代码进行了一些格式化以便于阅读 awk t 0 0 t 0 print 0 value of 0 is 0 0 t 0 print 0 value of 0 is 0 0 t 0 print 0 value o

随机推荐

  • 使用 codeigniter 上传多张图片

    我使用了之前找到的一些代码一次上传一张图像 效果非常好 我想对多个图像使用相同风格的代码 该模型 function cover upload afbeelding path where the picture needs to be upl
  • 错误:无法访问声纳服务器“http://localhost:9000”

    运行以下命令时 cmd c C sonar runner 2 4 bin sonar runner bat 声纳运行器安装在构建机器上 我收到以下错误 错误 声纳服务器 http 本地主机 9000 http localhost 9000
  • 库(传单)中的错误:没有名为“传单”的包

    我像这样编写了 docker 文件来部署闪亮的 r 应用程序 FROM rocker r base latest RUN apt get update apt get install y no install recommends sudo
  • Azure DevOps 仅限制组织内的访问

    我需要仅在组织网络内部限制对 Azure DevOps 的访问 怎么可能做到呢 我可以限制 IP 地址范围还是有其他方法 Azure DevOps 是一项云服务 因此您不能直接将其限制在您的 IP 地址范围内 但是有几个选项 1 Azure
  • 如何在 Perl 中呈现打开的文件夹选择对话框?

    如何在 Perl 中打开文件夹选择对话框 取决于您使用的 GUI 系统 也许还取决于平台 例如 在 Windows 上并使用Win32 GUI 您可以使用GetOpenFileName main is your main window my
  • 如何使用 Python 将 \t 写入文件

    我建立了一个网站 用户可以在表单中输入目录路径 我的程序将提取路径并写入一个文件 我的问题是 当路径包含一些特殊单词 例如 t n 时 程序无法正确写入文件 例如 C abc test 将变为 C abc TAB est 如何将字符串更改为
  • 使用自定义 Loader 时,不会在 ViewPager 片段上调用 ​​onResume()

    简洁版本 我有一个片段维护ViewPager为了显示另外两个片段 我们称它们为FragmentOne and FragmentTwo 启动应用程序时FragmentOne是可见的并且FragmentTwo位于屏幕外 仅当向左滑动视图时才可见
  • 如何在 wampserver 中安装 php 8?

    我正在尝试在 wampserver 中安装 PHP 8 并且按照 wampserver 官方论坛中的教程进行操作 但 PHP 8 不起作用 它显示以下错误 This PHP version 8 0 2 doesn t seem to be
  • 如何从一张图像平滑过渡到另一张图像

    我有一项活动正在更改图像视图定期 为此我编写了以下代码行 imageview setImageUri resId 我正在增加资源 ID 它工作正常 但突然从一张图像转换到另一张图像 我不希望这样 我希望图像视图平滑过渡到另一个图像 我怎样才
  • JQuery 隐藏对象

    好的 伙计们 我已经编辑了问题以便您能够理解 我有 10 张图片以及它们各自的名称 所以 你有 10 张图片和 10 个段落 由于图像不同 当然也有不同的名称 所以我不能使用类 因此 我对一张图像使用了一个 ID 对其名称使用了另一个 ID
  • 如何在 android 中创建带有网格视图的自定义警报对话框?

    我怎样才能创建一个警报对话框 with a GridView如上图所示 这是一个简单的实现 在活动内的代码中调用此方法 private void showAlertDialog Prepare grid view GridView grid
  • heroku 平台上的 Python 应用程序似乎在两个线程上启动

    有一个简单的Python应用程序部署在heroku平台上 from flask import Flask log APP STARTED single time connection to database and logging stuf
  • 该指南是随机的还是可猜测的

    我使用以下代码生成反 CSRF 令牌 TokenCSRF new Random Guid NewGuid GetHashCode Next 1 9999 ToString 这个令牌是可猜测的还是如预期的那样是真正随机的 编辑 我用以下内容替
  • 在 vb.net 中打乱字符串数组

    我正在 vb net 中开发一个网页 它将向用户生成许多多项选择题 我需要对已经放入数组中的四个答案进行洗牌 假设我必须遵循以下数组 array Correct Wrong1 Wrong2 Wrong3 我尝试使用以下方法 Public S
  • 如何让 IzPack 检查该软件的现有版本?

    我有一个我们使用的应用程序IzPack http izpack org创建安装程序 安装程序在当前状态下工作正常 但是 我需要添加功能以使其能够check是否是现有版本该软件已安装 我了解 IzPack 使用其开箱即用的方式支持此功能Che
  • 无法使用 smack、openfire 获取名册的存在

    我是 smack API 的新手 我正在尝试开发一个聊天应用程序 我试图在其中设置和获取状态 当我更改用户的存在时 它工作得很好 并且反映在 Openfire 服务器中 但是 当我尝试获取用户的存在状态时 即使他在 openfire 中的存
  • React-Native:警告:无法对未安装的组件执行 React 状态更新

    当我尝试从一个屏幕转换到另一个屏幕时 收到以下错误消息 这种情况发生在游戏应用程序中 其中多部手机参与游戏 并且根据它们在游戏中的角色以及该手机是主持游戏还是访客而具有不同的屏幕 当我尝试到达下一个屏幕 在左侧手机上 时 下图显示了此错误消
  • 如今,Macintosh 上的 TWAIN 状态如何?

    我目前正在开展一个项目 我们希望在 PC Windows 和 Macintosh 上与 TWAIN 扫描仪进行交互 在 Windows 上 我们基本上已经把一切都准备好了 并且代码可以在绝大多数扫描仪上成功运行 在 Mac OS X 上 我
  • 在执行 .toString() 后如何取回对象? [复制]

    这个问题在这里已经有答案了 我有一节课数据 java public class Data private String name private String age getters and setters for the above fi
  • 使用 gawk 解析 CSV 文件

    如何使用 gawk 解析 CSV 文件 简单设定FS 还不够 因为内部带有逗号的引用字段将被视为多个字段 使用示例FS 这不起作用 文件内容 one two three four five six seven eight nine 呆呆的脚