フォーマットされていないテキストファイルから特定の値を抽出して、各値を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