AWK: 모든 접두사를 선택하기 위해 필드($1)를 정규식에 넣는 방법은 무엇입니까?

AWK: 모든 접두사를 선택하기 위해 필드($1)를 정규식에 넣는 방법은 무엇입니까?

파일 A가 있다고 가정해 보겠습니다.

fileA 
fileB

현재 다음과 같은 파일이 있다고 가정해 보겠습니다.

fileA_someprefix_20160101.txt

지금 나는 원한다A의 접두사가 붙은 모든 행과 일치합니다.filename, 그래서 나는 생각한다:

FILE_NAME="fileA_someprefix_20160101.txt"    
awk '"$FILE_NAME" ~ /^$1/' A.txt

나는 성공하지 못한 채 달러 기호를 탈출하기 위해 다양한 방법을 시도했습니다.

모든 예에서 필드는 정규 표현식이 아닌 표현식(왼쪽)의 일부입니다.

어떻게 reverse시작하나요?

답변1

GNU awk를 사용하면 문자열 표현식이 ~.

awk -v FILE_NAME="$FILE_NAME" 'FILE_NAME ~ ("^" $1)'  A.txt

답변2

awk정규식에서는 변수를 참조 할 수 없습니다 /regex/.

POSIXly 접두사를 확인하려면 index()다음 함수를 사용하세요.

FN="fileA_someprefix_20160101.txt" awk 'index(ENVIRON["FN"], $1) == 1' <file

~에서POSIX 사양awk:

색인(에스,)

1부터 시작하는 번호가 매겨진 문자열의 위치를 ​​문자 단위로 반환합니다.에스어디에 문자열먼저 발생하거나 전혀 발생하지 않는 경우 0입니다.

관련 정보