我有以下分隔符和字符串:

DEL=":::"
STR="info1"$DEL"info2"$DEL"info3"

我想用awk从STR中提取info1-2-3。
以下工作:
info1=$(echo $STR | awk '{split($0,a,":::")} END{print a[1]}')
info2=$(echo $STR | awk '{split($0,a,":::")} END{print a[2]}')
info3=$(echo $STR | awk '{split($0,a,":::")} END{print a[3]}')

以下操作不起作用:
info1=$(echo $STR | awk '{split($0,a,"$DEL")} END{print a[1]}')

发生了什么?

最佳答案

因为DEL是shell变量,所以应该使用如下内容:

info1=$(echo $STR | awk -v delimeter="$DEL" '{split($0,a,delimeter)} END{print a[1]}')

关于bash - 使用多字符定界符在AWK中拆分字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30559425/

10-13 07:20