私はこのような文字列を持っています:
Grades ABCDEF-123456
この文字列をこのように2つのセクションに分割したい
Grades ABCDEF
Grades 123456
どうすればbashでそれを行うことができますか?
シェルでもこれを完全に行うことができます:
text="Grades ABCDEF-123456"
先行テキストを分割します。必要に応じてキャプチャできますが、ここでは破棄します。
grades="${text#* }"
これで、2つの部分を変数として抽出できますが、ここではそれらを出力します。
echo "Grades ${grades%-*}"
echo "Grades ${grades#*-}"
これらを1つの出力ステートメントにまとめてクラッシュすることもできますが、(printf
がecho
よりも安全である場合でも)読みやすいとは思いません。
printf "Grades %s\nGrades %s\n" "${grades%-*}" "${grades#*-}"
echo Grades "ABCDE-12345" | sed 's/-/ /g' | awk '{ print $1" "$2"\n"$1" "$3'}
Grades ABCDE
Grades 12345
または@steeldriverごと
awk -F'[ -]' '{print $1, $2; print $1, $3}'
これを行うには、ダッシュを改行で置き換え、その後に最初のフィールドを続けます。
Perl -alpe 's/-/\n$F[0] /'