linux - 在 bash 中解析 CSV 并分配变量

标签 linux bash parsing csv awk

我有一个格式的 csv(在 Linux 上使用 Bash)

DN , MAC , Partition ,  

123 , abc , xyz  
321 , asd , asd 

我可以通过使用 awk 来解析它

eval MAC=($(awk -F "," '{print $1}' random.csv))

这是针对 CSV 中的每一列完成的,因此我可以单独调用 DN[2]MAC[2] 等,这是手动的并单独解析它们。

但是如何按行解析 csv? 例如:如果我调用DN123,那么相应的MACPartition也应该被返回。

最佳答案

尝试循环:

while IFS=, read dn mac partition
do 
  echo "Do something with $dn   $mac and $partition"
done < file

要选择一条记录,您可以使用 case 语句:

P2=123
while IFS=, read dn mac partition
do 
  case $dn in
    ($P2) echo echo "Do something with $dn   $mac and $partition" ;;
    (*)   echo "Do nothing" ;;
  esac
done < file

关于linux - 在 bash 中解析 CSV 并分配变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15350208/

相关文章:

linux - 生成核心转储

linux - Mpi 程序与 linux 一起运行

linux - OpenSSL 错误和 linux 进程内存管理

linux - 如何从文件列表中创建不存在的文件列表

bash - 解析bash命令的结果

c - 当使用 strlen 获取 const char* 的长度时,我得到一个负数?

linux - BASH 休眠并向程序发送击键

Java ProcessBuilder 和 bash

parsing - 如何修改 XPATH 解析器?

xml - 如何用 Opa 解析 XML?