서식이 지정되지 않은 텍스트 파일에서 특정 값을 추출하여 각 값을 한 줄에 포함하는 새 파일을 만들고 싶습니다. 예를 들어 이 파일에서...
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