如何提取 csv 文件中的一列
如果我有一个 csv 文件,有没有一种快速的 bash 方法可以只打印出任何一列的内容? 可以肯定的是,每一行的列数相同,但每一列的内容长度不同。
95
3
如果我有一个 csv 文件,有没有一种快速的 bash 方法可以只打印出任何一列的内容? 可以肯定的是,每一行的列数相同,但每一列的内容长度不同。
你可以使用 awk 来实现这一点。将 '$2' 改为你想要的第 n 列。
是的。
cat mycsv.csv | cut -d ',' -f3
将打印第 3 列。其他答案都很有效,但既然你要求只用 bash shell 来解决问题,那么你可以这样做:
然后你可以像这样取出列(本例中的第一列):
因此,这里有几件事要做:
while IFS=,
- 这是说使用逗号作为 IFS(内部字段分隔符),shell 用逗号来分隔字段(文本块)。所以说 IFS=, 就像说 "a,b" 和 IFS=" " 时的 "a b" 是一样的(默认情况下就是这样)。read -a csv_line;
-这表示每次读入一行,并创建一个数组,其中每个元素都称为"csv_line",然后将其发送到 while 循环的"do"部分。do echo "${csv_line[0]}";done