bashでいくつかの区切り文字に文字列を分割しますか?

bashでいくつかの区切り文字に文字列を分割しますか?

文字列を区切り文字(文字列自体でもある)で区切られた部分文字列に分割したいと思います。

私はこれをどうすることができますか?

  • ちょうどbashを使用しますか? (私の主な関心でもあるミニマリズムのために)

  • それとも、特定のテキスト処理プログラムが許可されていますか? (プログラム利用時の便宜のため)

ありがとうございます。

簡単な例、

  • 、 に分けられます。1--123--23--112323
  • 合計に分けて1?*123?*1123

ベストアンサー1

IFSとを使用する純粋なbashソリューションですread。文字列には以下を含めないでください(またはIFSの場合は残念ながら機能しませんが、たとえば機能しない$'\2'他の項目)。$'\0'$'\666'

#!/bin/bash

split_by () {
    string=$1
    separator=$2

    tmp=${string//"$separator"/$'\2'}
    IFS=$'\2' read -a arr <<< "$tmp"
    for substr in "${arr[@]}" ; do
        echo "<$substr>"
    done
    echo
}


split_by '1--123--23' '--'
split_by '1?*123' '?*'

またはPerlを使用してください。

perl -E 'say for split quotemeta shift, shift' -- "$separator" "$string"

おすすめ記事