awk 및 정규식 사용을 지원해 주세요.

awk 및 정규식 사용을 지원해 주세요.

구분 기호가 있는 파일이 있고 |첫 번째 필드와 다른 필드를 인쇄해야 하며 $1정규식과 일치하는 부분을 인쇄해야 합니다 \[(.*?)\>.

cat x.txt |nawk -F"|" '{print $1"|"match regex $2,"|" match regex $3}'

어떻게 하나요?

답변1

첫째, 애초에 cat 명령이 필요하지 않습니다. 명령줄 끝에 "<x.txt"를 사용하여 파일 출력을 awk로 리디렉션할 수 있습니다. 더 좋은 점은 awk가 처리할 파일 이름을 인수로 사용할 수 있다는 것입니다. 그래서 나는 당신이 다음과 같은 것을 원한다고 생각합니다 :

awk -F"|" '{
  printf "%s", $1;
  for (i=2; i<=NF; i++) {
    if (match($i, /\[(.*?)>/)) {
      printf " %s", substr($i,RSTART,RLENGTH);
  }};
  printf "\n"
}' x.txt

파일의 각 줄에 대해 첫 번째 필드를 인쇄한 다음 나머지 각 필드(있는 경우)에서 찾은 모든 정규식 일치 항목을 인쇄합니다. 출력 필드는 공백으로 구분됩니다. 이는 두 번째 printf 명령에서 선행 공백을 편집하여 변경할 수 있습니다.

관련 정보