로그 파일의 각 줄에 대해 두 패턴 사이의 문자열을 추출하려고 합니다.
예를 들어
some_string: stuff_i_am_interested_in some_other_string
some_string: stuff_i_am_interested_in some_other_string
some_string: stuff_i_am_interested_in some_other_string
some_string: stuff_i_am_interested_in some_other_string
그것을 얻을 수 있는 방법이 있나요 stuff_i_am_interested_in
?
답변1
$ cut -d' ' -f2 file
stuff_i_am_interested_in
stuff_i_am_interested_in
stuff_i_am_interested_in
stuff_i_am_interested_in
이것이 필요한 전부가 아닌 경우 질문을 편집하여 요구 사항을 명확히 하고 보다 대표적인 입력/출력 예제를 제공하십시오.
답변2
그리고 grep
:
grep -Po 'some_string: \K.*(?= some_other_string)' file
grep -Po '(?<=some_string: ).*(?= some_other_string)' file
그리고 sed
:
sed -n 's/some_string: \(.*\) some_other_string/\1/p' file
줄의 some_string
시작이나 끝이 아닌 경우 다음을 수행할 수 있습니다.some_other_string
sed -n 's/.*some_string: \(.*\) some_other_string.*/\1/p' file
답변3
sed를 사용하여 이 작업을 수행할 수 있습니다.
cat logfile | sed -n -e 's/some_string: //p' | sed -n -e 's/ some_other_string//p'