我想在 Linux 中使用以下命令编写一个 bash 脚本 AWK
SED
grep
curl
查找特定的单词然后对其进行计数。
这是我的脚本:
#!/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,但当我仅使用 AWK
命令时,如下 AWK
以及具有 HTML 源的文件 awk '/test/{f=1}/link/{g=1}/WOW/{h=1} !f && !g && h;/testend/{f=0}/linkend/{g=0}/wow/{h=0}' 示例 | grep -o“哇”| 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}' 示例 | grep -o“哇”| 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}' 示例 | grep -o "WOW"example
结果是 4 - 尝试使用脚本结果为0
正确答案是5
我认为问题在于如何在脚本中将 urlsou 变量传递给 AWK 或者如何为 urlsource 创建临时文件。
我的问题是什么,如何在没有任何编程语言或额外命令的情况下解决它?
最佳答案
尝试这样做:
#!/bin/bash
echo "URL:"
read url
urlsou=$(curl -s "$url")
# \b is "word boundaries"
result=$(sed 's/\b/\n/g' <<< "$urlsou" | grep -c WOW)
echo "Total :" "$result"
您提到您不想学习另一种语言,好吧。但要知道这只是一个快速而肮脏的脚本,仅此而已。
关于Linux Bash 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19646103/