awk를 사용하여 공백이 있는 파일 이름 추출

awk를 사용하여 공백이 있는 파일 이름 추출

다음과 같은 출력 라인이 있습니다.

M file.txt

다음 awk 프로그램을 입력하세요:

awk '{printf("\t%s: %s %s\n", FNR, $1, $2)}'

반품

1: M file.txt

이는 가능하며 일반적으로 그렇습니다. 그러나 파일에 공백이 있고 출력 줄이 다음과 같은 경우:

M "tmux split-window subcommand.md"

awk는 이것을 제공합니다 :

1: M "tmux

그러나 원하는 출력은 다음과 같습니다.

1: M "tmux split-window subcommand.md"

이 문제를 어떻게 해결할 수 있나요?

답변1

현재 줄에 줄 번호를 추가하려면 다음 명령을 사용하십시오 awk.

awk '{ printf("%d: %s\n", FNR, $0) }'

0번째 필드 $0는 전체 행입니다.

답변2

구분 기호를 사용하면 따옴표 사이의 공백을 별도의 단어로 처리하지 않습니다.

따라서 입력 문자열에 나타나지 않을 것으로 생각되는 구분 기호를 사용할 수 있습니다.

echo 'M "tmux split-window subcommand.md"' | awk -F: '{printf("\t%s: %s %s\n", FNR, $1, $2)}' 1: M "tmux split-window subcommand.md"

답변3

이 시도:

  #!/usr/bin/awk -f
  BEGIN {
        #FPAT = "([^,]+)|(\"[^\"]+\")" # seperator is ,
        #FPAT = "([^,]*)|(\"[^\"]*\")" # seperator is , and allow empty field -> notice the "+" changed to "*"
        FPAT = "([^ ]+)|(\"[^\"]*\")" # seperator is <space> -> notice the "," changed to " "
  }
  {
    printf("%d: ", FNR);
        for (i = 1; i <= NF; i++) {
            printf("%s ", $i)
        }
    printf("\n");
  }

GNU awk 온라인 매뉴얼에서 얻었습니다. 이 하나. https://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html

관련 정보