###前提・実現したいこと
シェルにおいて下記のような内容の文字列(1列)の並んだファイルから括弧外の数字列を除いたものを取得したいです。 ●実行前 [(a)-2(b,)6( )-130(c)-2(d)11(e )-130(f,)7( )-130(g)12(h )-130(i)-2(j)8(k )-133(l)-2( )-130(m)11(n)-2(o)-5 ( )-130(p)14(q)-2( )-130(r)11(s)-7( )-130(t)9(u)-2(v)8( )-130(w)-2(x)-5( )-130(y)5(z)-2(1)3(2 )-130(3)8 (4 )-133(5 )-131(6)-2(7)8(8.)7( )-130(9)3(10 )-130(-1)5(-2 )-130(-3 )-127(-4)11(-5)11( )] ●実行後 [(a)(b,)( )(c)(d)(e )(f,)( )(g)(h )(i)(j)(k )(l)( )(m)(n)(o)( )(p)(q)( )(r)(s)( )(t)(u)(v)( )(w)(x)( )(y) (z)(1)(2 )(3)(4 )(5 )(6)(7)(8.)( )(9)(10 )(-1)(-2 )(-3 )(-4)(-5)( )]
###発生している問題・エラーメッセージ
取得する際に括弧ないに含まれてきたスペースが詰められた状態で取得されてしまいました。 ●例 [(a)(b,)()(c)(d)(e)(f,)()(g)(h)(i)(j)(k)(l)()(m)(n)(o)()(p)(q)()(r)(s)()(t)(u)(v)()(w)(x)()(y) (z)(1)(2)(3)(4)(5)(6)(7)(8.)()(9)(10 )(-1)(-2)(-3)(-4)(-5)()] またsedによって置き換えをしようと思ったのですが sed -e "s/).*(//g" としてみてももちろんうまくいきませんでした。
###該当のソースコード
bash
1#!/bin/bash 2count=1 3while read -s -n1 LINE; do 4 if [[ ${LINE} == "(" ]]; then 5 count=1 6 fi 7 if [[ ${count) == 1 ]]; then 8 printf "${LINE}" >> afterfile.txt 9 if [[ ${LINE} == ")" ]]; then 10 count=0 11 fi 12done < beforefile.txt 13
###試したこと
bashによる1文字ずつ読み込んで場合分け。
###補足情報(言語/FW/ツール等のバージョンなど)
ターミナルで動かしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。