私の質問は続けることです
ファイルを解析して「グループ番号」に保存されている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
。