使用awk重复CSV中的第一列,列数未知

omqzjyyz  于 2022-12-06  发布在  其他
关注(0)|答案(1)|浏览(137)

我尝试创建一个2列CSV,其中第一列是名称,第二列是值。

DATA='POLICY_NAME01,VM001,VM002,VM003
POLICY_NAME02,VM004
POLICY_NAME03,VM005,VM006'

IFS=$'\n'
for LINE in $DATA; do
    POLICY=$(echo "${LINE}" | cut -d , -f 1)
    VMS=$(echo "${LINE}" | cut -d , -f 2- | tr ',' '\n')
    for VM in $VMS; do
        echo "${POLICY},${VM}"
    done
done

输出:

POLICY_NAME01,VM001
POLICY_NAME01,VM002
POLICY_NAME01,VM003
POLICY_NAME02,VM004
POLICY_NAME03,VM005
POLICY_NAME03,VM006
oalqel3c

oalqel3c1#

这个awk应该可以:

awk 'BEGIN{FS=OFS=","} {for (i=2; i<=NF; ++i) print $1, $i}' <<< "$DATA"

POLICY_NAME01,VM001
POLICY_NAME01,VM002
POLICY_NAME01,VM003
POLICY_NAME02,VM004
POLICY_NAME03,VM005
POLICY_NAME03,VM006

相关问题