bash(awk)split string

时间:2018-05-31 20:12:04

标签: bash awk

我有一个字符串:

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

1 个答案:

答案 0 :(得分:2)

你需要转义管道字符

$ awk -v b="123 321 || 431543 653 || 039 ||" 'BEGIN{print split(b,a," \\|\\| ")}'
3

请注意,大小不是4而是3,因为最后一个分隔符缺少尾随空格char。也许你应该让包装空间可选。