如何获取输入CSV文件中每行的第一列并输出到新文件?我在考虑使用awk
但不确定如何使用。
答案 0 :(得分:57)
试试这个:
awk -F"," '{print $1}' data.txt
它会将文件data.txt
中的每个输入行拆分为基于,
字符的不同字段(使用-F
指定)并将第一个字段(列)打印到stdout。
答案 1 :(得分:52)
可以做到:
$ cut -d, -f1 data.txt
答案 2 :(得分:8)
echo "a,b,c" | cut -d',' -f1 > newFile
答案 3 :(得分:6)
输入
a,12,34
b,23,56
代码
awk -F "," '{print $1}' Input
<强>格式强>
awk -F <delimiter> '{print $<column_number>}' Input
答案 4 :(得分:3)
这可以使用grep
:
$ grep -o '^[^,]\+' file.csv
答案 5 :(得分:0)
使用Perl:
perl -F, -lane 'print $F[0]' data.txt > data2.txt
使用以下命令行选项:
-n
循环输入文件的每一行-l
在处理之前删除换行符,然后将其添加回来-a
autosplit模式 - 将输入行拆分为@F
数组。默认为在空格上拆分。 -e
执行perl代码-F
autosplit修饰符,在这种情况下会在,
如果您想就地修改原始文件,请使用-i
选项:
perl -i -lane 'print $F[0]' data.txt
如果您想就地修改原始文件并制作备份副本:
perl -i.bak -lane 'print $F[0]' data.txt
如果您的数据是以空格分隔而不是以逗号分隔:
perl -lane 'print $F[0]' data.txt