Chr*_*ris 0 shell bash awk csv
这是我经常输入的一个表达式,因为每个人都使用带头的 CSV 文件,我也必须出于我的目的传递标题:
cat foo.csv | awk -F',' 'BEGIN{start=0}{if(start==0){start = 1; print $0; next;} ...}'
Run Code Online (Sandbox Code Playgroud)
必须有一些微不足道的设置来允许标题通过,并避免创建 BASH 脚本包装器(并在我的大脑中拖曳它)或一遍又一遍地编写它。
有这样的设定吗?
我假设您仍然想awk对这个 CSV 文件执行文本处理操作。如果是这样,我建议在“行号”上添加一个条件,如下所示:
awk -F',' 'NR==1{print} NR>1{ your code here }' foo.csv
Run Code Online (Sandbox Code Playgroud)
这里,NR是awk“记录号”的内置变量,它通常默认为行号(注意,在处理多个文件时,这是“全局处理行数”,每个文件的行号是FNR)。您还可以通过省略NR==1{...}部分来轻松省略打印标题。
如果最终你print无论如何都会在你的操作中使用,你可以“打高尔夫球”这个
awk -F',' 'NR>1{ your code here }1' foo.csv
Run Code Online (Sandbox Code Playgroud)
的1代表“打印结果线($0)”。
还:
cat文件通过管道传输到awk,只需将其作为命令行参数提供start=0您的BEGIN部分中的语句| 归档时间: |
|
| 查看次数: |
287 次 |
| 最近记录: |