Printing 如何使用分隔文件awk,然后按原样将值传递给参数?
如何按原样将带分隔符的文本文件中的值传递给参数(VW、MSG、DIV) 这是我的密码-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第三个循环) 谢谢你的帮助。谢谢。不知道你想做什么,但其中一个应该会有帮
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