複数のファイルの特定の行から2つの文字列を抽出し、タブで区切られた新しいファイルとして印刷する必要があります。

複数のファイルの特定の行から2つの文字列を抽出し、タブで区切られた新しいファイルとして印刷する必要があります。

私はUnixとPythonの経験を持っていますが、まだ見慣れていて、それについて十分に知っていません。

複数のファイルを含むフォルダがあり、各ファイルから2つの特定の文字列を抽出し、それらの間にタブを持つ新しいテキストファイルとして印刷する必要があります。ファイルは次のようになります。

mlu +t*CHI +f
Thu Jan 12 16:27:40 2017
mlu (08-Jan-2016) is conducting analyses on:  
  ONLY dependent tiers matching: %MOR;
****************************************
From file <adam01.cha>
MLU for Speaker: *CHI:
  MLU (xxx, yyy and www are EXCLUDED from the utterance and morpheme counts):
    Number of: utterances = 1236, morphemes = 2735
    Ratio of morphemes over utterances = 2.213
    Standard deviation = 1.300

ファイル名と「タイプ対発話比」の値を抽出する必要があります。だから私はこの文字列を取り出し、次のような新しいファイルを作成したいと思います。

adam01.cha    2.213
adam02.cha    2.547
...

ここで正確に何をすべきかわかりません。どこから始めるべきかさえわかりません。 egrep、awk、またはsedが最良の選択であるかどうか、ファイルを正しく繰り返すforループにそれらを置く方法を決定することはできません。

ベストアンサー1

現在のフォルダ内の各ファイルに対してループ内でsedを使用できます。関連部分を抽出して次のファイルに追加します>>file

for files in *; \
do sed -n -e '/^From file/ H;' \
          -e '/Ratio of morphemes over utterances/ {H; x; s/\n//g; s/From file <\(.*\)>.*Ratio of morphemes over utterances = \([0-9]*\.[0-9]*\).*/\1:    \2/g; p;}' "$files";
done >>file

おすすめ記事