次のテキストファイルがあります。
(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.txt
Joseph.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など)を受け入れます。