我有一个字符串:
b="123 321 || 431543 653 || 039 ||"
我使用“||”作为分隔符。我想用3个字符串分隔它:
123 321
431543 653
039 ||
当我尝试用bash拆分时:
for element in ${b//" || "/ } ; do echo $element; done
结果:
123
321
431543
653
039
||
当我使用awk时 - 我有相同的结果(我只获得第一个数字,但结果预计为“123 321”):
echo $b |awk '{split($0,a," || "); print a[1]}'
123
答案 0 :(得分:2)
你需要转义管道字符
$ awk -v b="123 321 || 431543 653 || 039 ||" 'BEGIN{print split(b,a," \\|\\| ")}'
3
请注意,大小不是4而是3,因为最后一个分隔符缺少尾随空格char。也许你应该让包装空间可选。