bash - 如何只选择我的 AWK 脚本中的前 10 行

标签 bash csv awk

我有一个很大的 CSV 文件。基本上我想做的是只显示前 5 列(我可以),但我也只想显示前 10 行,这是我无法弄清楚的。现在这是我拥有的 .awk 文件脚本:

"BEGIN {FS = ","}
{print $1", " $2", " $3", " $4", " $5}"

在 Tera Term 中,这是我使用的命令,它会显示每行的前 5 列: $awk -f 示例.awk 示例.csv

我已经尝试了几种使用 NR<=11 的方法,但在尝试在 Tera Term 上运行时不断出现错误消息。

请帮忙!

最佳答案

尝试:

awk -F, '{print $1,$2,$3,$4,$5} NR==10{exit}' OFS=', ' file.csv

[注意 awk 代码在引号中,而不是双引号。这是防止 shell 将 $1 等误解为 shell 变量并扩展它们所必需的。]

工作原理

  • -F, 告诉 awk 使用 , 作为输入的字段分隔符。这等同于 BEGIN {FS = ","},但更简洁。

  • print $1,$2,$3,$4,$5 告诉 awk 打印前五列。 (请参阅下文了解为什么此版本中不需要 ", " 字符串。)

  • NR==10{exit} 在第十行告诉 awk 退出。

  • OFS=', ' 告诉 awk 使用逗号空格作为输出的字段分隔符。此设置使原始代码中的大部分引用变得不必要。

关于bash - 如何只选择我的 AWK 脚本中的前 10 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37097272/

相关文章:

linux - AWK 日期到纪元

bash - 在 bash 中使用 getopts 的 bool cli 标志?

bash - 如何在 Makefile 中运行子 Shell 脚本?

Linux bash 正则表达式全局标志

linux - 查找包含在名为的目录中的所有文件

csv - Imacros 脚本。从 csv 文件中提取数据并填写表格

可能需要每行捕获多个表达式的正则表达式 (sed)

csv - 如何从导入的 csv 文件中索引日期时间列 - pandas

python - 在 Python 中附加到 .csv 文件

xml - awk 使用 printf fmt - 创建 xml