행에서 날짜 필드 추출

행에서 날짜 필드 추출

이런 파일이 있어요

Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10

날짜 필드를 추출하고 해당 날짜를 구분 기호($)가 있는 열로 추가해야 합니다. 날짜는 파일의 어느 위치에나 나타날 수 있습니다.

[Fri Jun 10 06:11:59 2016]$Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
[Fri Jun 11 06:11:59 2016]$Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10

답변1

날짜가 항상 [... 에 포함되어 있고 ]이것이 행의 첫 번째라고 가정하면 [다양한 방법을 사용할 수 있습니다. 내가 일반적으로 사용하는 두 가지:

두 가지 명령을 사용하십시오 cut(게으른 옵션이지만 그 기능을 이해하기 쉽습니다).

cut -d'[' -f2 $srcfile | cut -d ']' -f1

sed간단한 정규식을 사용하는 표준 옵션:

sed 's/.*\[\([^]]*\)].*/\1/' $srcfile

출력이 여러 문자를 포함하여 더 복잡하다면 더 복잡한 문자열이 포함된 옵션을 [사용해야 합니다 .sed

sed 's/.*\[\(... ... .. ..:..:.. ....\)].*/\1/' $srcfile

편집: 수정된 질문은 문자열 앞에 추가하고 나머지 줄은 변경하지 않으려고 합니다. 그래서 우리는 sed약간 수정된 변형을 사용합니다:

sed 's/\(.*\[\(... ... .. ..:..:.. ....\)].*\)/[\2]$\1/' $srcfile

결과:

[Fri Jun 10 06:11:59 2016]$Sampleoutput1[Fri Jun 10 06:11:59 2016]Local/ESSBASE0///139929633446208/Error(10
[Fri Jun 11 06:11:59 2016]$Sampleoutput1Local/ESSBASE0///139929633446208/[Fri Jun 11 06:11:59 2016]Error(10

관련 정보