내 파일에 다음 문자열이 있고 다음 단어를 추출하고 싶습니다. -s
즉, yesterday
따옴표 없이:
-t -w -g london -s 'yesterday' -e 'yesterday' -f 100000"
원하는 출력
yesterday
내가 시도한 것
첫 시도:
grep -oP '(?<=\-s )\w*.*'
이로 인해
'yesterday' -e 'yesterday' -f 100000
그러나 때로는 다음과 같은 결과를 얻을 수도 있습니다. 즉, 따옴표가 없거나 큰 따옴표도 포함되어 있습니다.
-t -w -g london -s "yesterday" -e 'yesterday' -f 100000" -t -w -g london -s yesterday -e yesterday -f 100000"
두 번째 시도:
grep -oP '(?<=\-s )\w*'
여기서는 출력에 작은따옴표만 표시됩니다.
위 상황을 어떻게 처리해야 할지 모르겠습니다.
답변1
LookBehind 정규식을 통해 따옴표(단일 또는 이중)가 있는 문자열을 추출하고 나중에 잘라내는 비교적 간단한 방법(GNU grep)
grep -oP -- '-s\s*\K([^ ]+)' file | tr -d \'\"
답변2
grep
예제 입력이 제공된 대체(GNU):
-t -w -g london -s 'yesterday' -e 'yesterday' -f 100000"
-t -w -g london -s "yesterday" -e 'yesterday' -f 100000"
-t -w -g london -s yesterday -e yesterday -f 100000"
$ grep -oP "(?<=-s \"|-s '|-s )[^'\" ]*" file
yesterday
yesterday
yesterday