아래와 같이 많은 줄이 포함된 파일이 있습니다.
123)hfd)jggg)7584)abc
123)))7584)abc
)hfd)jggg)7584)cdf)))abc
)hfd)))abc
)
[오른쪽 대괄호]가 네 번째로 나타나면 abc로 줄을 출력 해야 합니다 . 따라서 출력은 다음과 같아야 합니다.
123)hfd)jggg)7584)abc
123)))7584)abc
)hfd)))abc
답변1
grep
충분한:
grep -E '^([^)]*\)){4}abc'
이 명령은 ")" 이외의 문자 시퀀스로 시작하고 그 뒤에 ")"가 4번 반복되고 그 뒤에 "abc"가 오는 행을 찾습니다.
답변2
에서는 awk
임의의 필드 구분 기호를 설정할 수 있습니다. 이 경우 )
필드 구분자 로 사용하려면 를 사용하면 됩니다 -F')'
. 첫 번째 필드는 첫 번째 구분 기호 앞에 오는 필드이고, 두 번째 필드는 첫 번째와 두 번째 구분 기호 사이에 있는 필드입니다. "abc"
다섯 번째 필드( ) $5
의 문자열을 쿼리하려고 합니다 .
awk -F')' '$5 == "abc"' file
awk
한 줄씩 작업하는 것은 조건이 충족되면 명령을 실행하는 것과 같습니다. 조건이 없으면 각 줄에서 명령이 실행되고, 명령이 없으면 조건이 충족되면 전체 줄이 인쇄됩니다.'CONDITION { COMMAND }'
답변3
와 함께GNU sed편집하다. 해당 문자가 네 번째로 나타나는 곳에 마커를 배치하고 )
다음 단계에서는 이를 제거해 보세요. 성공 후 인쇄합니다.
sed -ne '
s/)/\n/4
s/\nabc/)abc/p
' file