端末の名前間のデータを新しいファイルに保存しますか?

端末の名前間のデータを新しいファイルに保存しますか?

次のテキストファイルがあります。

(Employee Ashley)

insert text here

(Employee Bob)

insert text here

(Employee Joseph)

insert text here

各「従業員」のテキストを取り、新しいファイルに保存したいと思います。必要に応じて、従業員数を手動で計算できます。端末でこれを行うにはどうすればよいですか?

私は「awk」を考えていますが、開いている括弧は真ん中にテキストがある唯一のものなので、開いている括弧を検出する方法を考えています。ファイルディレクトリに>出力ファイルディレクトリ

未解決の問題を解決するのに役立つ人はいますか?

答え1

while read -r line; do
    if [[ $line == "(Employee "*")" ]]; then
        t="${line#(Employee }"
        t="${t%)}"
        fn="${t}.txt"
    fi
    echo "$line" >>$fn
done <original_file.txt

これにより、テキストがAshley.txt、、、、&cに入力されます。Bob.txtJoseph.txt

答え2

awk ' /^\(Employee/ { FILENAME="";
                      for ( i=2 ; i<=NF; i++)
                         FILENAME=FILENAME $i;
                      FILENAME=substr(FILENAME,1,length(FILENAME)-1) ".txt";
                    }
     !/^\(Employee/ { print >> FILENAME } '

これは、最初の行が常に従業員識別子であると仮定します。ループforは姓または複数の名前(Betty Lou、Mary Joなど)を受け入れます。

関連情報