我可以使用 grep 提取 CSV 文件的单列吗?

2023-11-22

我正在努力解决我必须尽快解决的问题。 我有一个 csv 文件,字段用 ; 分隔。 我被要求使用 grep 创建一个 shell 命令,使用正则表达式仅列出第三列。我不能使用剪切。这是一种练习。

我的文件是这样的:

1;Evan;Bell;39;Obigod Manor;Ekjipih;TN;25008
2;Wayne;Watkins;22;Lanme Place;Cotoiwi;NC;86578
3;Danny;Vega;25;Fofci Center;Momahbih;MS;21027
4;Larry;Robinson;23;Bammek Boulevard;Gaizatoh;NE;27517
5;Myrtie;Black;20;Savon Square;Gokubpat;PA;92219
6;Nellie;Greene;23;Utebu Plaza;Rotvezri;VA;17526
7;Clyde;Reynolds;19;Lupow Ridge;Kedkuha;WI;29749
8;Calvin;Reyes;47;Paad Loop;Beejdij;KS;29247
9;Douglas;Graves;43;Gouk Square;Sekolim;NY;13226
10;Josephine;Estrada;48;Ocgig Pike;Beheho;WI;87305
11;Eugene;Matthews;26;Daew Drive;Riftemij;ME;93302
12;Stanley;Tucker;54;Cure View;Woocabu;OH;45475
13;Lina;Holloway;41;Sajric River;Furutwe;ME;62184
14;Hettie;Carlson;57;Zuheho Pike;Gokrobo;PA;89098
15;Maud;Phelps;57;Lafni Drive;Gokemu;MD;87066
16;Della;Roberson;53;Zafe Glen;Celoshuv;WV;56749
17;Cory;Roberson;56;Riltav Manor;Uwsupep;LA;07983
18;Stella;Hayes;30;Omki Square;Figjitu;GA;35813
19;Robert;Griffin;22;Kiroc Road;Wiregu;OH;39594
20;Clyde;Reynolds;19;Lupow Ridge;Kedkuha;WI;29749
21;Calvin;Reyes;47;Paad Loop;Beejdij;KS;29247
22;Douglas;Graves;43;Gouk Square;Sekolim;NY;13226
23;Josephine;Estrada;48;Ocgig Pike;Beheho;WI;87305
24;Eugene;Matthews;26;Daew Drive;Riftemij;ME;93302

我想我应该使用类似的东西: cat

Thanks.


适合工作的工具:使用awk or cut

假设您要将第三列与特定字段进行匹配:

awk -F';' '$3 ~ /Foo/ { print $0 }' file.txt

...将打印第三个字段包含的任何行Foo。 (改变print $0 to print $3将仅打印第三个字段)。

如果您只想打印第三列,请使用cut: cut -d';' -f3 <file.txt

错误的工具:使用 GNUgrep

在一个系统上grep-o选项,您可以将两个实例链接在一起 - 一个实例修剪第四列之后的所有内容(并删除少于四列的行),另一个实例仅获取最后剩余的列(因此,第四列):

str='foo;bar;baz;qux;meh;whatever'
grep -Eo '^[^;]*[;][^;]*[;][^;]*[;][^;]*' <<<"$str" \
  | grep -Eo '[^;]+$'

解释一下它是如何工作的:

  • ^,在方括号之外,仅匹配行首。
  • [^;]*匹配任何字符,除了;零次或多次。
  • [;]仅匹配字符;.

...因此,每个[^;]*[;]正则表达式中的匹配单个字段,无论该字段是否包含文本。将其中四个放在第一阶段意味着我们仅匹配字段,并且grep -o tells grep仅发出它成功匹配的内容。

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

我可以使用 grep 提取 CSV 文件的单列吗? 的相关文章

  • 如何列出 nginx 中的所有虚拟主机

    有没有一个命令可以列出 CentOS 上 nginx 下运行的所有虚拟主机或服务器 我想将结果通过管道传输到文本文件以用于报告目的 我正在寻找与我用于 Apache 的命令类似的命令 apachectl S 2 gt 1 grep 端口 8
  • awk 返回两个变量

    现在这就是我正在做的事情 ret ls la awk print 3 9 usr echo ret awk print 1 fil echo ret awk print 2 问题是我没有运行ls我正在运行一个需要时间的命令 因此您可以理解其
  • 使用运算符 j 操作 zsh 数组

    以下代码摘自here http eseth org 2010 git in zsh html function vi git st local ahead behind remote local a gitstatus Are we on
  • Bash - 比较 2 个文件列表及其 md5 校验和

    我有 2 个列表 其中包含带有 md5sum 检查的文件 即使文件相同 列表也具有不同的路径 我想检查每个文件的 md5 和 我们正在讨论数千个文件 这就是为什么我需要脚本来仅显示差异 第一个列表是普通列表 第二个列表是文件的当前状态 我想
  • exec()、shell_exec()、curl_exec() 的安全漏洞

    有时 我会使用 exec shell exec 和curl exec 以下是典型用途 假设其中有 PHP 变量 即第一个变量中的 html 用户有可能修改其内容 从安全漏洞的角度来看 我应该关注什么 escapeshellcmd 和 esc
  • adb shell 输入带有空格的文本

    如何发送带有空格的文本 例如 一些文字 using adb shell input text 找到以下解决方案 adb shell input text some stext 工作正常 但是有什么简单的方法可以用 s 替换空格吗 Examp
  • 如何将多个 Excel 工作表转换为 csv python

    我想转换所有的excel文档 xls 将工作表转换为 csv 如果 excel 文档只有一张工作表 那么我将进行如下转换 wb open workbook path1 sh wb sheet by name Sheet1 csv file
  • 如何在R中逐行写入文件

    我正在尝试逐行读取 csv 文件 并且仅选择左侧的第二个和第三个单元格以及右侧的第三个单元格 例如 如果这一行中有 17 个单元格 我将选取第 15 个单元格 然后我想合并这 3 个单元格 用逗号分隔 然后将此行写入一个新的 csv 文件
  • Tweepy StreamListener 到 CSV

    我是 python 新手 我正在尝试开发一个应用程序 使用 Tweepy 和 Streaming API 从 Twitter 检索数据并将数据转换为 CSV 文件 问题是此代码不会创建输出 CSV 文件 也许是因为我应该将代码设置为在实现例
  • 在 Django shell 会话期间获取 SQL 查询计数

    有没有办法打印 Django ORM 在 Django shell 会话期间执行的原始 SQL 查询的数量 Django 调试工具栏已经提供了此类信息 例如 5 QUERIES in 5 83MS但如何从 shell 中获取它并不明显 您可
  • sed 和 rev shell 命令转换为 Python 脚本 [重复]

    这个问题在这里已经有答案了 有一个shell命令 我正在尝试将逻辑转换为python 但我不知道该怎么办 我需要一些帮助 shell命令是这样的 cd tests src main test ls find name vrlp while
  • 通过 shell 脚本查找“非”硬链接的文件

    给定一个目录 如何找到其中的所有文件 以及任何子目录 not硬链接文件 或者更具体地说 这不是具有多个引用的硬链接文件 基本上我想扫描一个文件夹并返回一个列表unique该目录中的文件 包括目录和符号链接 不是它们的目标 如果可能的话 最好
  • 使用 PHP 代码和 HTML 表单将 Excel (.csv) 导入 MySQL

    我知道还有其他类似的帖子 但每个人都建议直接在 PHPMyAdmin 中将其导入 MySQL 这工作完美 但我需要通过 HTML 表单导入 PHP 到 MySQL 我想要一个收集文件的 HTML 表单 然后将该文件传递给 PHP 脚本 我想
  • 使用 DictWriter 写入字典键的子集

    我编写了一个函数 使用以下命令将字典列表序列化为 CSV 文件csv模块 代码如下 data csv DictWriter out f fieldnames data writerows dictrows 但是 有时我只想将每个字典键的子集
  • 使用 FileSystemObject 读取和写入 csv 文件

    是否可以使用 VBA 中的 FileSystemObject 读取和写入 csv 文件 必然是 基本语法如 Set objFSO CreateObject scripting filesystemobject create a csv fi
  • 如何将 HTML 表格转换为 csv 格式?

    是否有 HTML 解析器或某些库可以自动将 HTML 表格转换为 CSV 数据行 Here is http www unix com shell programming scripting 45274 html table csv html
  • 将 CSV 导入 Excel - 自动“文本到列”和“插入表格”

    我想在 Excel 2010 上打开 CSV 逗号分隔 文件并自动将文本转换为列 然后选择所有活动单元格并插入带标题的表格 是否可以在我的功能区中添加一个按钮来为我完成这一切 我经常使用不同大小的 CSV 文件 我发现每次手动执行此操作有点
  • shell脚本中是否有互斥/信号量机制?

    我正在 shell 脚本中寻找互斥 信号量 并发机制 考虑以下情况 除非 a 用户不关闭共享文件 否则 b 用户应该无法打开 更新它 我只是想知道如何在 shell 脚本中实现互斥量 信号量 临界区等 在 shell 脚本中实现锁定机制 文
  • 如何隐藏显示终端命令输出

    当我运行这个命令时 sudo htpasswd b home reynolds htpasswd admin admin 我正在得到输出Updating password for user admin在终端中 但我不想显示该输出 所以我在谷
  • LaunchAgent 不运行 shell 脚本

    在 Catalina 之前的 macOS 下 我有一个每天运行 shell 脚本的 LaunchAgent 升级并切换到 zsh 后 它不起作用 我检查过的事情 shebang 切换到 zsh shell脚本可以从命令行手动执行 sh 在系

随机推荐

  • System.Threading.Monitor.Enter() 如何工作?

    我有一个问题 Monitor Enter 是如何工作的 我研究了 net框架源代码 它只显示了这一点 System Security SecurityCritical auto generated ResourceExposure Reso
  • Android 10 默认短信应用程序对话框未显示

    我已成功修改我的应用程序以用作默认短信应用程序 问题在于应该提示用户将我的应用程序设置为默认应用程序的对话框 它似乎适用于旧版本 但不适用于 android 10 模拟器 My code fun Activity askToBeDefaul
  • 如何显示“您确定要离开此页面吗?”何时进行更改?

    在 stackoverflow 中 如果您开始进行更改 然后尝试离开该页面 则会出现一个 javascript 确认按钮并询问 您确定要离开该页面吗 布利巴拉布洛 以前有人实施过这个吗 我如何跟踪已提交的更改 我相信我自己可以做到这一点 我
  • android 将 XML 视图转换为位图而不显示它

    我正在尝试设置我的地图集群的视图 我正在从 XML 扩充视图并根据簇大小设置文本 并且我想显示该视图 在下面的代码中我得到一个空位图作为回报 private Bitmap createClusterBitmap int clusterSiz
  • 在 Vaadin 7 中调用 VaadinSession getAttribute 时需要锁定

    我知道调用 setAttribute link 但是 getAttribute 呢 它是否正确 public Object getMyAttribute return VaadinSession getCurrent getAttribut
  • 为什么内核中不使用SIMD指令?

    我在内核中找不到太多 SIMD 指令 如 SSE AVX 的使用 除了一处用于加速 RAID6 奇偶校验计算的地方 Q1 有什么具体原因或者只是缺乏用例吗 Q2 如果我想在设备驱动程序中使用 SIMD 指令 今天需要做什么 Q3 将像 IS
  • Paypal PHP REST 服务 - “访问令牌没有所需的范围”

    我正在使用 Paypal REST SDK 用 PHP 进行编码 我已将我的 Sandbox 帐户设置为使用澳元 在意识到我的初始交易是美元并且交易被保留后 我解决了这个问题 使用修改后的代码 我尝试创建付款 我假设我会返回一个 URL 该
  • Delphi/Android在哪里搜索本地语言库?

    我想向 Delphi Android 应用程序添加 MIDI 功能 MIDI 可通过 SoniVox 库使用 该库可通过 Android NDK 访问 可以找到该驱动程序的示例here 该驱动程序是用 C 编写的 使用 NDK 可以创建一个
  • Azure有像AWS的CloudFormation一样的IaC工具吗? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我将 GCP 与 AWS 进行了比较 两者的 IaC 工具都是 Deploy Manager 和 CloudFormation 蔚蓝呢 Azure有
  • 有没有办法将 Python 程序编译为二进制并将其与 Scratch Dockerfile 一起使用?

    我最近一直在研究 docker 镜像 我看见这个泊坞窗文档关于使用FROM scratch 我想看看我能走多远 只是为了好玩 我用Python编程 该文档说将示例 C 程序编译为二进制文件 将其复制到容器中 然后运行它 在容器中 我无法运行
  • 删除 .php 扩展名(明确编写)以获得友好的 URL [关闭]

    Closed 这个问题是无关 目前不接受答案 htaccess 删除我网站文件的 php 扩展名 RewriteEngine on RewriteBase RewriteCond SCRIPT FILENAME d RewriteCond
  • 非详尽模式的更好例外情况

    当 GHCi 在运行时发现调用生成的值与函数的模式匹配不匹配时 是否有办法让 GHCi 生成更好的异常消息 它目前给出了产生非详尽模式匹配的函数的行号 虽然有时很有帮助 但确实需要一轮调试 有时我觉得一遍又一遍地做同一组事情 因此 在尝试制
  • 如何在 Django 模板中获取我的网站的域名?

    如何从 Django 模板中获取当前站点的域名 我尝试查看标签和过滤器 但什么也没有 如果您想要实际的 HTTP 主机标头 请参阅 Daniel Roseman 对 Phsiao 答案的评论 另一种选择是如果您使用的是贡献站点框架 您可以为
  • 删除 Tkinter 窗口上的 TK 图标

    如何从窗口标题栏中删除 tkinter 图标 在 Windows 上 步骤1 使用图标编辑器或类似网站创建透明图标RW设计师 另存为transparent ico 第二步 from tkinter import tk Tk tk iconb
  • 获取 MVC 捆绑包查询字符串

    是否可以在 ASP NET MVC 中检测捆绑查询字符串 例如 如果我有以下捆绑请求 css bundles mybundle css v 4Z9jKRKGzlz D5dJi5VZtpy4QJep62o6A xNjSBmKwU1 是否可以提
  • 为现有表添加自增ID?

    我有一个预先存在的表 其中包含 fname lname email password 和 ip 但现在我想要一个自动增量列 但是 当我输入 ALTER TABLE users ADD id int NOT NULL AUTO INCREME
  • 不带参数解释的 Printf

    我知道如果 printf 没有给出任何参数 它会输出一个意外的值 Example include
  • 如何使用命令行安装较旧的 PhoneGap 版本?

    如何安装旧版本PhoneGap使用命令行 我熟悉以下安装命令 sudo npm install g phonegap 但是 这只会安装最新版本 npm install g phonegap
  • Java 一个方法中有两个可变参数

    Java 有没有办法创建一个需要两个不同的可变参数的方法 我知道 对于相同的对象类型 这是不可能的 因为编译器不知道从哪里开始或结束 但为什么两种不同的对象类型也不可能呢 例如 public void doSomething String
  • 我可以使用 grep 提取 CSV 文件的单列吗?

    我正在努力解决我必须尽快解决的问题 我有一个 csv 文件 字段用 分隔 我被要求使用 grep 创建一个 shell 命令 使用正则表达式仅列出第三列 我不能使用剪切 这是一种练习 我的文件是这样的 1 Evan Bell 39 Obig