AWK에서 패턴화된 필드 구분 기호의 일치 값을 인쇄하는 방법

AWK에서 패턴화된 필드 구분 기호의 일치 값을 인쇄하는 방법

다음 명령에서는

cat abc.txt|awk -F"[0-9]+." '{print FS $3}'

FS그러나 일치하는 값 이 해당 필드 구분 기호로 인쇄되기를 [0-9]+.원합니다 (예: "99"). awk. 어떻게 할 수 있는지 아시나요?

이것에 대해서는 아래에서 이야기합시다 abc.txt. 두 번째 문장을 숫자로 구분하고 싶습니다. as를 선택 FS하고 번호를 인쇄합니다. 출력에서. 기본적으로 ...의 값을 인쇄하고 싶습니다 FS. 이 요구는 여러 곳에서 발생했습니다.

14. Animals  20. features           
1. tiger   1. wild animal
2. cat     2. domestic animal
3. parrot  3. bird with wings

답변1

FS일치시키려는 문자열의 값을 원하지 않습니다 FS(같은 줄에 있는 다른 문자열일 수 있음).

> awk -F"[0-9]+." '{ printf "line %3d.: ",NR; 
  if (NF==1) { print "No FS match in this line"; next; }; str=$0; 
  for(j=1;j<NF;j++) { match(str, FS); fs_str=substr(str, RSTART, RLENGTH); 
  printf "_%s_, ",fs_str; str=substr(str, RSTART+RLENGTH)}; print ""; }' file
line   1.: _14._, _20._, 
line   2.: _1._, _1._, 
line   3.: _2._, _2._, 
line   4.: _3._, _3._,

답변2

좋아요gawkFPAT이를 위해

awk -vFPAT='[[:digit:]]+\\.' 'NF{$1=$1; print}' file
14. 20.
1. 1.
2. 2.
3. 3.

관련 정보