다음과 같은 문장이 포함된 파일이 있습니다.
..........[xxxx][xxxx]
..........[xxxx][xxxx]
..........[xxxx][xxxx]
각 문장 끝에 [][]가 2개 있습니다. [][] 및 [][]의 해당 내용을 새 파일로 추출하는 방법은 다음과 같습니다.
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]
나는 성공하지 못한 채 터미널 정규식을 시도했습니다. 감사해요,
답변1
grep
grep
GNU(또는 이 옵션을 지원하는 다른 도구 -o
)를 사용하여 이를 시도해 보세요.
grep -o '\[[^]]*\]\[[^]]*\]$' file > new_file
산출:
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]
답변2
grep
을 지원 -o
하고 다른 작업은 수행하지 않는 경우 [
첫 번째 이후의 모든 것을 원합니다 [
.
$ grep -oP '[^]]*\K\[.*' file
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]
[
원하지 않는 다른 것이 있으면 다음을 시도해 보십시오.
$ grep -oP '.*\K\[.+?\]\[.*' file
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]
grep
지원이 없다면 -o
(나는 믿습니다.그냥 macOS) 다음과 같이 사용할 수 있습니다.
$ sed -E 's/.*(\[.+?\]\[.*)/\1/' file
[xxxx][xxxx]
[xxxx][xxxx]
[xxxx][xxxx]
답변3
POSIX sed:
sed 's/.*\(\[[^]]*\]\[[^]]*\]\)$/\1/' file
\[[^]]*\]
-others[
이외의 숫자와 일치합니다 .]
]
\(\[[^]]*\]\[[^]]*\]\)$
\(\)
첫 번째이자 유일한 캡처 그룹에 의해 캡처된 줄 끝에 고정된 두 개와 일치합니다 .\1
캡처된 그룹만 출력에 남습니다.