bash - 使用 bash (sed/awk) 提取 CSV 文件中的行和列?

标签 bash csv sed awk

bash 是否能够处理从 csv 文件中提取行和列?希望我不必求助于 python..

我的 5 列 csv 文件如下所示:

Rank,Name,School,Major,Year
1,John,Harvard,Computer Science,3
2,Bill,Yale,Political Science,4
3,Mark,Stanford,Biology,1
4,Jane,Princeton,Electrical Engineering,3
5,Alex,MIT,Management Economics,2

我只想提取第 3、4 和 5 列内容,忽略第一行,所以输出如下:

Harvard,Computer Science,3
Yale,Political Science,4
Stanford,Biology,1
Princeton,Electrical Engineering,3
MIT,Management Economics,2

到目前为止,我只能让 awk 打印出我的 CSV 文件的每一行或每一列,但不能像这种情况那样打印出特定的列/行! bash 可以做到这一点吗?

最佳答案

awk -F, 'NR > 1 { print $3 "," $4 "," $5 }' 

NR是当前行号,而$3、$4、$5是由给-F的字符串分隔的字段

关于bash - 使用 bash (sed/awk) 提取 CSV 文件中的行和列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14492590/

相关文章:

windows - 如何在 Windows 上执行节点脚本 (#!/usr/bin/env node)?

date - 将 csv 文件的 yyyymmdd 转换为 mm/dd/yyyy

bash - BSD sed 无法全部替换 ",0,"

bash - 如何使用 openssl 将加密/解密消息输出到 stdout

bash 脚本 : how to save return value of first command in a pipeline?

linux - 提取 pcap 文件中的字节范围

Python PANDAS 写入 csv : how to set decimal point (".", 或 ",")?

shell - 使用分隔符进行剪切时获取第一个和最后一个出现的位置

bash - 结合 cp/chmod 在 cp 期间修改 perms

linux - 如何打印包含特定数字的行号?