내 질문은 계속하는 것입니다
파일을 구문 분석하여 "그룹 번호"에 저장된 3자리 숫자를 추출하는 방법
일련의 명령을 쉘 스크립트에 통합하려고 합니다.
유럽 표준을 구문 분석하여 테스트 시퀀스 추출
텍스트 인코딩을 utf8로 변환
위 게시물에서 제공한 awk 루틴을 사용하여 결과를 처리합니다.
대상 파일에 콘텐츠 저장
아래에 임시로 스크립트를 작성했습니다. step 1
and 만 구현할 수 있고 nor 는 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
답변1
전달된 코드를 /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
.