각 줄에서 char 발생 뒤의 단어를 비교하십시오.

각 줄에서 char 발생 뒤의 단어를 비교하십시오.

아래와 같이 많은 줄이 포함된 파일이 있습니다.

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

관련 정보