파일에서 문자열을 검색하고 그 뒤에 오는 문자열을 변수에 저장합니다.

파일에서 문자열을 검색하고 그 뒤에 오는 문자열을 변수에 저장합니다.

예: 이것이 파일에 있다고 가정합니다.

AB: Test CD: Testing EF: Rest

CD를 검색하고 "테스트"를 변수에 저장하는 스크립트를 원합니다. 몇 가지를 시도했지만 awk왠지 진전이 없습니다.

답변1

grepPerl 스타일 정규 표현식을 사용하면 앞으로 되돌아보기를 사용할 수 있습니다.

variable_a=`grep -Po '(?<=CD: )[^ ]+' file.txt`

Bash에서 이렇게 말해보세요:

  • 이름이 지정된 변수를 만들고 variable_a역따옴표 안에 있는 명령으로 생성된 값을 할당합니다.
  • grepPerl 정규식( )을 사용해야 하며 라인()의 일치하는 부분 -P만 반환해야 합니다 .-o
  • [^ ]패턴은 "CD:" 뒤에 공백이 아닌 문자( ) 가 1개 이상 나와야 합니다 .
  • "file.txt"에서 패턴을 검색하세요.

답변2

게시한 입력/출력 예제가 가능한 모든 사용 사례를 포괄한다고 가정하면...

모든 sed의 경우:

$ var=$(sed -n 's/.*CD: \([^ ]*\).*/\1/p' file)
$ echo "$var"
Testing

어떤 이상한 경우 :

$ var=$(awk 'sub(/.*CD: /,""){sub(/ .*/,""); print}' file)
$ echo "$var"
Testing

관련 정보