bash – 将csv文件的第一列解析为新文件

前端之家收集整理的这篇文章主要介绍了bash – 将csv文件的第一列解析为新文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
操作系统:OSX
方法:从命令行,所以使用sed,cut,gawk,虽然最好不要安装模块.

本质上我试图拿一个csv文件的第一列,并解析为一个新的文件.

示例输入文件

EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,3
EXAMPLE2,120,6
EXAMPLE3,6
EXAMPLE4,6

欲望输出

EXAMPLEfoo 
EXAMPLEbar
EXAMPLE1
EXAMPLE2
EXAMPLE3
EXAMPLE4

所以我想要第一列.

这是我到目前为止所尝试的

awk -F"," '{print $1}' in.csv > out.txt

awk -F"," '{for (i=2;i<=NF;i++)}' in.csv > out.txt

awk -F"," 'BEGIN { OFS="," }' '{print $1}' in.csv > out.txt

cat in.csv | cut -d \,-f 1 > out.txt

没有似乎工作,无论是打印第一行还是没有任何内容,所以我假设没有逐行阅读.

你的最后一个选择对我来说是完美的:
$cat > in.csv
EXAMPLEfoo,6
[Ctrl+D]
$cat in.csv | cut -d,-f1
EXAMPLEfoo
EXAMPLEbar
EXAMPLE1
EXAMPLE2
EXAMPLE3
EXAMPLE4

也许线路结局在这里咬你?如果该文件具有DOS风格或甚至旧的Mac风格的行尾,这可能会导致奇怪的行为.尝试运行文件in.csv,看看它出现了什么.

$file in.unix.csv
in.unix.csv: ASCII text
$file in.dos.csv
in.dos.csv: ASCII text,with CRLF line terminators

如果后者是您的情况,请使用dos2unix工具来转换文件.

编辑:在OS X上,似乎是flip is what you want.

原文链接:https://www.f2er.com/bash/386801.html

猜你在找的Bash相关文章