我正在尝试使用分隔符“|”拆分字符串。但是,我想在第二个示例中从我的示例数据中获取“|”。我怎样才能做到这一点?

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/

10-11 15:48