【问题标题】:read in column from csv file into bash script将 csv 文件中的列读入 bash 脚本
【发布时间】:2015-12-02 21:27:50
【问题描述】:

在 bash 脚本中,我想循环遍历存储在 csv 文件中的值。如何将 csv 文件中的列导入 bash 脚本,然后执行以下操作:

for i in {column imported from csv}

do
mkdir "$i"
done

我的 csv 文件如下所示:

1, 3, 8
4, 6, 10
123, 6, 8
324, 9, 12

如何导入第一列得到:

for i in {1, 4, 123, 324} 

【问题讨论】:

  • 您是否想要数据中的逗号?假设语法中的 4 个值中有 3 个在它们之后有一个逗号,这可能是也可能不是数据中的逗号。
  • 不,我不想要逗号

标签: bash csv


【解决方案1】:

你甚至不需要循环,只需使用cutxargs

cut -d, -f1 file | xargs mkdir

使用for 循环获取第一列:

while IFS=, read -ra arr; do
   echo "processing ${arr[0]}"
done < file
processing 1
processing 4
processing 123
processing 324

echo 更改为您想在循环中使用的任何命令。

【讨论】:

  • 如果我只是制作目录,这很好,但我想要循环,因为我需要对变量做其他事情。
【解决方案2】:
$ for i in $(cut -d, -f1 file); do mkdir "$i"; ... ; done

或者用awk替换cut

$ for i in $(awk -F, '{print $1}' file); do mkdir "$i"; ... ; done

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-03
    • 1970-01-01
    • 2016-09-07
    • 2020-06-18
    • 2021-06-04
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多