AWK
SED
grep
curl
特定の Word を見つけてカウントする次のコマンドを使用して、Linux で bash スクリプトを作成したいと考えています。
これが私のスクリプトです:
#!/bin/sh
echo "URL:"
read url
urlsou=$(curl -s "$url")
result=$(awk '/test/ {f=1} /link/ {g=1} /WOW/ {h=1} !f && !g && h; /testend/ {f=0} /linkend/ {g=0} /wow/ {h=0}' | grep -o "WOW" | grep -c "WOW")
echo "Total :" "$result"
スクリプトを使用すると0になりますが、HTMLソースを持つファイルで次のAWK
コマンドのみを使用すると、正しい回答が得られます。AWK
awk '/test/ {f=1} /link/ {g=1} /WOW/ {h=1} !f && !g && h; /testend/ {f=0} /linkend/ {g=0} /wow/ {h=0}' example | grep -o "WOW" | grep -c "WOW"
これが私のサンプルファイルです(しかし、私の実際のファイルは非常に複雑です):
WOW1wow
linklinkend
wow1WOWwow123WOW
testtestend
WOWWwow
link WOW test testend linkend wow
WOW2wow
link WOW 123 wow linkend
awk '/test/ {f=1} /link/ {g=1} /WOW/ {h=1} !f && !g && h; /testend/ {f=0} /linkend/ {g=0} /wow/ {h=0}' example | grep -o "WOW" | grep -c "WOW" example
結果が5で試してみてください- 試してみると
awk '/test/ {f=1} /link/ {g=1} /WOW/ {h=1} !f && !g && h; /testend/ {f=0} /linkend/ {g=0} /wow/ {h=0}' example | grep -o "WOW" example
結果は4 - スクリプトで試してみると結果は0です
正解は 5
問題は、スクリプトで urlsou 変数を AWK に渡す方法、または urlsource の一時ファイルを作成する方法にあると思います。
私の問題は何ですか?プログラミング言語や追加のコマンドなしでどうすれば修正できますか?