Parse CSV in bash and assign variables

后端 未结 3 1227
耶瑟儿~
耶瑟儿~ 2021-01-03 07:39

I have a csv of the format (Working on Bash on linux)

DN , MAC , Partition ,  

123 , abc , xyz  
321 , asd , asd 

I am able to parse it u

相关标签:
3条回答
  • 2021-01-03 07:56

    you can also try this

    file1 stores all the DN for which you want to retrieve the information

    #parse.awk
    
    BEGIN { FS="," ; OFS= "\t"}
    
    FNR==NR{ a[$1]; next }
    
    $1 in a { print $1,$2,$3}
    

    call awk -f parse.awk file1 csvfile.csv

    0 讨论(0)
  • 2021-01-03 08:00

    Try a loop:

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

    To select a record you could use a case statement:

    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
    
    0 讨论(0)
  • 2021-01-03 08:03

    Using awk :

    read -p "Gimme the DN integer >>> " i
    awk -v i=$i -F' , ' '
        NR>1{
            dn[NR]=$1
            mac[NR]=$2
            partition[NR]=$3
        }
        END{
            for (a=2; a<=NR; a++)
                if (i == dn[a])
                    print dn[a], mac[a], partition[a]
        }
    ' file.txt
    
    0 讨论(0)
提交回复
热议问题