Printing 如何使用分隔文件awk,然后按原样将值传递给参数?

Printing 如何使用分隔文件awk,然后按原样将值传递给参数?,printing,awk,do-while,Printing,Awk,Do While,如何按原样将带分隔符的文本文件中的值传递给参数(VW、MSG、DIV) 这是我的密码- cat VPconfig.txt | sed 's/ //g' | awk -F"|" '{print $1, $2, $3}' | while read VW MSG DIV 输出: BB 832 ONSA AL ONSA 850 PCMS 我得到的VW、MSG和DIV的值不正确。值应该为null(对于MSG第二个循环)和(对于VW第三个循环) 谢谢你的帮助。谢谢。不知道你想做什么,但其中一个应该会有帮

如何按原样将带分隔符的文本文件中的值传递给参数(VW、MSG、DIV)

这是我的密码-

cat VPconfig.txt | sed 's/ //g' | awk -F"|" '{print $1, $2, $3}' | while read VW MSG DIV
输出:

BB 832 ONSA
AL ONSA
850 PCMS
我得到的VW、MSG和DIV的值不正确。值应该为null(对于MSG第二个循环)和(对于VW第三个循环)


谢谢你的帮助。谢谢。

不知道你想做什么,但其中一个应该会有帮助

选项1

如果您确实不需要或不想使用
awk
,但您计划在
bash
中执行其他操作,请使用此选项:

while IFS=\| read VW MSG DIV; do 
   echo $VW,$MSG,$DIV; 
done < VPconfig.txt 
选项2

如果您确实想要使用
awk
并想要最简单的调用,请使用此选项:

awk -F\| '{print $1,$2,$3}' VPconfig.txt
BB 832 ONSA
AL  ONSL
 850 PCMS
或者,如果要用逗号分隔输出字段,请使用以下变体:

awk -F\| '{print $1,$2,$3}' OFS=, VPconfig.txt
BB,832,ONSA
AL,,ONSL
,850,PCMS
选项3

如果希望简单调用
awk
并在
awk
中使用友好的变量名,请使用上一选项的此变体:

awk -F\| '{VW=$1;MSG=$2;DIV=$3; print VW,MSG,DIV}' VPconfig.txt
选项4

如果要对
bash
中的变量执行其他操作,并使用友好的用户友好名称将它们传递到
awk
,请使用此选项:

#!/bin/bash
while IFS=\| read VW MSG DIV; do 
   awk -v VW="$VW" -v MSG="$MSG" -v DIV="$DIV" 'BEGIN{print VW,MSG,DIV}'
done < VPconfig.txt
#/bin/bash
而IFS=\\\读取大众MSG DIV;做
awk-v VW=“$VW”-v MSG=“$MSG”-v DIV=“$DIV”'开始{print VW,MSG,DIV}”
完成
不太清楚您的意思。您能指出所需的输出是什么吗?您好@fedorqui,我想得到$VW、$MSG和$DIV的正确值(接受null和空格)。awk可以是
awk-F\\\'{$1=$1}1'文件
awk -F\| '{VW=$1;MSG=$2;DIV=$3; print VW,MSG,DIV}' VPconfig.txt
#!/bin/bash
while IFS=\| read VW MSG DIV; do 
   awk -v VW="$VW" -v MSG="$MSG" -v DIV="$DIV" 'BEGIN{print VW,MSG,DIV}'
done < VPconfig.txt