先上代码
echo 'foo,bar' | awk '{n = split($0,a,/,/); for(i=1;i<=n;i++) print a[i]}'
foo
bar
echo 'foo,bar' | awk 'BEGIN{FS=","}{n = split($0,a); for(i=1;i<=n;i++) print a[i]}'
foo
bar
echo 'foo,bar' | awk '{n = patsplit($0,a,/[^,]*/); for(i=1;i<=n;i++) print a[i]}'
foo
bar
echo 'foo,bar' | awk 'BEGIN{FPAT="[^,]*"}{n = patsplit($0,a); for(i=1;i<=n;i++)print a[i]}'
foo
bar
echo "123aaa345bbb678ccc" | awk '{n = patsplit($0,a,/[[:digit:].]+/); for(i=1;i<=n;i++) print a[i]}'
123
345
678
echo "123aaa345bbb678ccc" | awk 'BEGIN{FPAT="[[:digit:].]+"}{n = patsplit($0,a); for(i=1;i<=n;i++) print a[i]}'
123
345
678
split默认是以FS为分隔符,直接切割字符串
patsplit是pattern split的意思,是将pattern匹配成功的部分放到队列里,默认是以FPAT为匹配正则