如果我有以下格式的 csv 文件:
column1,column2,column3,column4,column5,column6,column7,column8
我只想awk
打印我会使用的第 2 到第 7 列:
awk -F',' '{print $2 "," $3 "," $4 "," $5 "," $6 "," $7}' file.csv
并得到:
column2,column3,column4,column5,column6,column7
有没有办法连接第 2-7 列来简化命令。当我考虑一个包含更多列的文件时,我的awk
命令会变得非常长。
实用程序切割有一个紧凑的符号:
生产:
回答@PlasmaBinturong 的评论:我的意图是解决短调用序列的问题:“......我的 awk 命令会变得非常长......”。但是,您也可以找到按照您的需要排列字段的代码。尽管我喜欢 awk、perl、python,但我经常发现构建一个特定的实用程序来扩展标准 *nix 的功能很有用。因此,这里是一个测试脚本 s2 的摘录,显示了实用程序 recut 和arrange,两者都允许重新排列和复制,arrange 还允许减小字段范围:
从这些版本产生结果:
my-recut 是对 textutils 代码 recut 的轻微修改,arrange 是我们的扩展版。更多信息:
最良好的祝愿......干杯,drl
b=开始字段编号,e=结束字段编号。如果您需要处理带引号字段、嵌入逗号、换行符等的 CSV,请参阅https://stackoverflow.com/q/45420535/1745001。
结果:
用下面的命令测试,它工作正常
输出