구분 기호 중 하나가 4개의 밑줄(하나가 아님)인 경우 여러 구분 기호가 작동하지 않습니다.

구분 기호 중 하나가 4개의 밑줄(하나가 아님)인 경우 여러 구분 기호가 작동하지 않습니다.
PWD=sgy_comp.20170328_090951.20170328_090730.d_0327____20170325_002526.seiscat

.두 가지를 정의해야 해요____

작동하지 않는 일반 구문을 사용하려고 하면 4개의 구분 기호 [.____]로 처리됩니다 ( 와 동일 ____하므로 )._____

예:

basename $PWD
sgy_comp.20170328_090951.20170328_090730.d_0327____20170325_002526.seiscat

basename $PWD|awk -F[."____"] '{print $4}'
090951

보상을 받기 위해 열심히 노력하고 있어요 d_0327. 내가 원하는 방식으로 작동하지 않는 이유를 이해하고 작동하도록 하는 올바른 구문을 찾고 있습니다.

답변1

[<set>]성냥하나문자(다음으로 확장됨요소 구성일부 도구를 사용하고 경우에 따라 제공된 것에서)<set>.

[.____]특별한 경기하나문자(단 ., _또는 , 또는 _, 또는 _) 입니다 _. 말할 필요도 없이 [.____]똑같습니다 [._].

두 문자열 중 하나를 일치시키려면 |대체 연산자가 필요합니다.

awk -F '\\.|____' '{print $4}'

최신(및 표준)을 사용하여 awk다음과 같이 작성할 수도 있습니다.

awk -F '\\.|_{4}' '{print $4}'

또한 [...]쉘은 [...]쉘 와일드카드이기도 하므로 따옴표로 묶어야 합니다. 귀하의 경우에는 ____쉘 부분만 인용했습니다. _이것은 쉘에 특별한 것이 아니기 때문에 필요하지 않습니다 . 즉 , 현재 디렉토리에 or 라는 -F[."____"]파일이 있는 경우 쉘 와일드카드는 에 전달되기 전에 해당 파일로 확장됩니다 . 그렇지 않은 경우 에 전달됩니다 (일부 쉘에서는 일치하지 않는 glob 대신 오류를 보고하지만).-F.-F_-F[."____"]awk-F[.____]awk

관련 정보