テキストの行が異なるファイルがあります。同じパターンの重複があるかどうかを確認したいと思います。
ファイル内:
Blah
Blah
Depends: ssloader, firmware (>= 3.0), firmware (<= 6.0), apta
blah
私の目的は、">= 3.0" & "<= 6.0" をファイルに入れることです。ただし、「ファームウェア」の依存関係が 1 つしかない場合があることに注意してください。
私がこれまでに持っているものは、最初のファームウェア情報のみを取得します:
if grep -Fq "firmware (" inputfile #checks if pattern exists
then
compat=$(look 'Depends:' inputfile) #grab line where pattern is
compat=${##*firmware (} #remove pattern and other stuff infront
compat=${compat%%)*} #remove other stuff behind ")"
echo $compat >> outputfile
fi
同じ行に複数のパターンがあるかどうかを確認する方法を知りたいです。または、同じパターンの行が複数ある場合、その行を特定する方法でファームウェアの値を取得できます。ありがとう
編集:
私の最初の意図は、同じパターンが複数あるかどうかを検出することです。私はアイデアを受け入れます。:)
このようなもの:
if (more than one of same pattern)
get both values #I am open to ideas to get this done <---
else
get value of this pattern
fi
EDIT2:
私はこのようにすることでこれを機能させました。
if grep -Fq "firmware (" ./control
then
compat=$(look 'Depends:' control)
compat=${compat#*firmware (}
compat=${compat%%)*}
echo -n $compat > ./compatibility.txt
if [ $(grep -o "firmware (" ./control | wc -l) -eq 2 ]; then
compat=$(look 'Depends:' control)
compat=${compat##*firmware (}
compat=${compat%%)*}
echo " $compat" >> ./compatibility.txt
fi
fi
私はそれが間違いなく非常に素人であることを知っており、パターンが "Depends:" ラベルにある場合にのみ機能します。
アイデア/インプットはありますか?