예: 이것이 파일에 있다고 가정합니다.
AB: Test CD: Testing EF: Rest
CD를 검색하고 "테스트"를 변수에 저장하는 스크립트를 원합니다. 몇 가지를 시도했지만 awk
왠지 진전이 없습니다.
답변1
grep
Perl 스타일 정규 표현식을 사용하면 앞으로 되돌아보기를 사용할 수 있습니다.
variable_a=`grep -Po '(?<=CD: )[^ ]+' file.txt`
Bash에서 이렇게 말해보세요:
- 이름이 지정된 변수를 만들고
variable_a
역따옴표 안에 있는 명령으로 생성된 값을 할당합니다. grep
Perl 정규식( )을 사용해야 하며 라인()의 일치하는 부분-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