テキストファイルから値を抽出して新しいファイルを生成する

テキストファイルから値を抽出して新しいファイルを生成する

フォーマットされていないテキストファイルから特定の値を抽出して、各値を1行に含む新しいファイルを作成したいと思います。たとえば、このファイルでは...

Calculating outliers
Range of metric values: 0.016416 1.319020 
Found 8 outliers over 0.3
Generating EVs
Found spikes at  77 132 140 142 155 156 157 175
Script complete

「Found Peaks」と「Script Completed」の間のすべての値を抽出して、以下のようなファイルを作成したいと思います。

77
132 
140 
142 
155 
156 
157 
175

また、抽出された値が常に同じ数値ではないことにも注意してください。 0から20以上の値がある可能性があります。

答え1

$ sed -n '/^Found spikes at  */s///p' file | tr ' ' '\n'
77
132
140
142
155
156
157
175

sedこれは文字列で始まりFound spikes at、後に特定の数のスペースが続く行を見つけるために使用されます。行が見つかると、文字列(数字の前のスペースを含む)が削除され、残りのビットが標準出力として印刷されます。sed標準出力は、trスペースを置き換える改行文字として読み込まれます。

最後に、リダイレクトを使用して結果を新しいファイルに保存します。

$ sed -n '/^Found spikes at  */s///p' file | tr ' ' '\n' >newfile

修正後ctac_でコメント追加の手順は必要ありませんtr

sed -n '/^Found spikes at  */s///p; y/ /\n/' file >newfile

関連情報