Unable to separate semi-colon separated line awk

前端 未结 3 2110
傲寒
傲寒 2020-12-20 21:30

I am trying to do the following:

  1. Read a file line by line.
  2. Each line has the following structure: field1;field2;field3
  3. Use
3条回答
  •  悲&欢浪女
    2020-12-20 22:00

    It's probably a bug with your awk. Try other formats like these:

    while read l
    do
        n=`echo "${l}" | awk -F\; '{print NF}'`
        field1=`echo "${l}" | awk -F\; '{print $1}'`
        field2=`echo "${l}" | awk -F\; '{print $2}'`
        field3=`echo "${l}" | awk -F\; '{print $3}'`
        echo "${n} ${field1} ${field2} ${field3}"
    done < temp 
    

    Or

    while read l
    do
        n=`echo "${l}" | awk -v 'FS=;' '{print NF}'`
        field1=`echo "${l}" | awk -v 'FS=;' '{print $1}'`
        field2=`echo "${l}" | awk -v 'FS=;' '{print $2}'`
        field3=`echo "${l}" | awk -v 'FS=;' '{print $3}'`
        echo "${n} ${field1} ${field2} ${field3}"
    done < temp 
    

    Or

    while read l
    do
        n=`echo "${l}" | awk 'BEGIN{FS=";"}{print NF}'`
        field1=`echo "${l}" | awk 'BEGIN{FS=";"}{print $1}'`
        field2=`echo "${l}" | awk 'BEGIN{FS=";"}{print $2}'`
        field3=`echo "${l}" | awk 'BEGIN{FS=";"}{print $3}'`
        echo "${n} ${field1} ${field2} ${field3}"
    done < temp 
    

    Try other awks like mawk or nawk as well.

提交回复
热议问题