我正在尝试使用分隔符“|”拆分字符串。但是,我想在第二个示例中从我的示例数据中获取“|”。我怎样才能做到这一点?
f() {
local IFS='|'
local foo
set -f # Disable glob expansion
foo=( $@ ) # Deliberately unquoted
set +f
printf '%d\n' "${#foo[@]}"
printf '%s\n' "${foo[@]}"
}
f 'un|dodecaedro|per|||tirare|per|i danni'
预期产量:
un
dodecaedro
per
|
tirare
per
i danni
最佳答案
可能有一些很好的方法来产生您所期望的结果,这里是我的方法,我希望您使用的是bash的最新版本,这里支持string
string='un|dodecaedro|per|||tirare|per|i danni'
awk '{
n=split($0,A,"|")
for(i=1;i<=n;i++)
{
if(length(A[i]) == 0 && length(A[i+1])==0)
{
print "|"; i+=1
}
else
{
print A[i]
}
}
}' <<<"$string"
结果
$ bash f
un
dodecaedro
per
|
tirare
per
i danni
关于linux - 使用分隔符分割字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22897221/