쉘 스크립트에 여러 줄 awk 스크립트를 통합하는 방법 것입니다. #!/bin/bash # creating the Latex code for

내 질문은 계속

“그룹 번호”에 보관 된 3 자리 숫자를 추출하기 위해 파일을 구문 분석하는 방법

단일 쉘 스크립트에 일련의 명령을 통합하려고합니다.

  1. 유럽 ​​표준을 분석하여 테스트 시퀀스 추출

  2. 텍스트 인코딩을 utf8로 변환

  3. 위의 게시물에서 나에게 제공 된 awk 루틴으로 결과를 처리하십시오.

  4. 내용을 대상 파일에 저장

잠정적으로 아래 스크립트를 작성했습니다. 난 단지 달성 할 수 생각 step 1하고 step 4있지만, 어느 쪽 step 2도 아니다 step 3. 중간 (임시) 파일을 만들어야하는지 궁금합니다. 중간 단계의 출력을 변수에 저장하려고했지만 성공하지 못했습니다. 모든 실수는 가능한 실수와이를 수행하는 가장 좋은 방법에 대한 도움이 될 것입니다.

#!/bin/bash
# creating the Latex code for a test procedure

awkcommand= "/usr/bin/awk
 '
    $1 == "Group" {printf("\\section{%s %d}\n", $1, $2); next}
    {
      title = sep = ""
      for (i=1; i<=NF; i++)
        if ($i ~ /^[0-9][0-9][0-9]$/) {
          printf("\\subsection{%s} \n\\TestDetails{%d}\n", title, $i)
          break
        }
        else {
          title = title sep $i
          sep = FS
        }
    }
'
"

sourcefolder="/Users/yves/Desktop/Test-folder-parsing/"
sourcefile="NFEN3545-001.pdf"
destfile="Latex-code.tex"
destfolder=$sourcefolder
destinationfilepath=${destfolder}${destfile}
extractioncmd="/usr/local/bin/pdftotext -layout -f 54 -l 54"
modifier=" -"
#textencodingcmd="/usr/bin/iconv -f L1 -t UTF-8" # Needed but not used

${extractioncmd}  ${sourcefolder}${sourcefile} ${modifier}  >  $destinationfilepath
exit 0



답변

전달 된 코드를 /usr/bin/awk변수와
/usr/bin/awk별도의 변수 (예정되지 않은)에 저장할 수 있습니다 .

awk=/usr/bin/awk

awkcommand='
$1 == "Group" {printf("\section{%s %d}\n", $1, $2); next}
{
title = sep = ""
for (i=1; i<=NF; i++)
  if ($i ~ /^[0-9][0-9][0-9]$/) {
    printf("\subsection{%s} \n\TestDetails{%d}\n", title, $i)
    break
  }
  else {
    title = title sep $i
    sep = FS
  }
}
'

용법:

$awk "$awkcommand"

큰 따옴표를 작은 따옴표로 변경했습니다. 큰 따옴표 안에 $i쉘 변수의 내용으로 대체됩니다 i. 작은 따옴표 내에서, 리터럴입니다 $i무엇을, awk볼 것으로 예상하고있다.

또한 문자열 내에서 큰 따옴표를 이스케이프 awk하지 않았 으므로
본 적이 없습니다.

$1 == "Group" {printf("\section{%s %d}\n", $1, $2); next}

대신에, 그것은 보았다

<contents of shell $1> == Group {printf(\section{%s %d}\n, <contents of shell $1>, <contents of shell $2>); next}

경우 $1$2비어 있었다 awk

 == Group {printf(\section{%s %d}\n, , ); next}

명령 위치를 저장해야합니까? 일반적으로 awk사용자 경로의 디렉토리 내 찾기에 의존 할 수 있습니다 . 에 대한 전체 경로를 사용하지 않으면 awk매개 변수를 지정할 이유가 없습니다 awk.


답변