특정 부분을 추출하여 새 파일을 생성하는 방법은 무엇입니까?

특정 부분을 추출하여 새 파일을 생성하는 방법은 무엇입니까?

내 초기 로그 파일 추출은 다음과 같습니다.

b6227|—|

답변1

sed몬테레이 12.6에서 사용됨

$ sed -En '/.*

답변2

사용행복하다(이전 Perl_6)

~$ raku -ne 'put $<> if m/ "Final SoC is " <(\d* \. \d*)> /;'  file

#OR
 
~$ raku -ne 'put $0 if m/ "Final SoC is " (\d* \. \d*) /;' file

입력 예:

b6227|—|

답변3

sed이는 원하는 줄을 일치시킨 다음 마지막 공백까지 모든 것을 자르는 데 사용됩니다 .

sed -e '/SocEvaluator:.*Final SoC is [[:digit:]]/!d' -e 's/.* //' file

주어진 데이터에 대해 다음이 출력됩니다.

64.5537%

이 문자를 제거하려면 %:

sed -e '/SocEvaluator:.*Final SoC is [[:digit:]]/!d' -e 's/.* //' -e 's/%$//' file

정확히 동일한 감지 정규식을 사용한 awk다음 해당 표현식과 일치하는 각 줄의 마지막 필드를 인쇄합니다.

awk '/SocEvaluator:.*Final SoC is [[:digit:]]/ { print $NF }' file

%인쇄하기 전에 표시를 제거하려면:

awk '/SocEvaluator:.*Final SoC is [[:digit:]]/ { sub("%$","",$NF); print $NF }' file

정규식

SocEvaluator:.*Final SoC is [[:digit:]]

SocEvaluator:...text 다음에 텍스트 Final SoC is와 숫자가 오는 모든 줄과 일치합니다 .

macOS에서는 sed다음 과 awk같은 Perl 호환 정규식을 이해하지 못합니다 .\d내 정규 표현식이 X에서는 작동하지만 Y에서는 작동하지 않는 이유는 무엇입니까?

관련 정보